Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
privetprivet
0 / 0 / 0
Регистрация: 03.11.2018
Сообщений: 37
1

Как правильно организовать зависимость через Ninject?

13.01.2019, 17:55. Просмотров 362. Ответов 4

Всем привет. Подскажите пожалуйста. какой день уже бьюсь над проблемой.
попытаюсь словами вкратце описать, потому что кода не мало там для того, что на форум все заливать. но если что, есть гитхаб, нужно будет, кину ссылку.

в общем дело такой.
у меня реализовать паттерн Repository для взаимодействия с бд через ado.net.
Ninject регистрирует 3 зависимости в Global.asax

Так вот, при старте приложения создается подключение, потом выводится список из бд на главную страницу. но когда я перехожу по ссылке что бы создать еще одну запись, вылетает ошибка что подключение уже открыто и не может быть открыто повторно. хотя нужно, что обо создавалось по требованию. именно тогда, когда я обращаюсь к репозиторию.
конечно если указать, что бы UserService был синглтоном, но все работает но 1 раз. второй раз запись не создать, т к подключение вовсе не открывается.

Буду очень благодарен за любую помощь!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class DALNinjectModule : NinjectModule
    {
        private string connectionString;
 
        public DALNinjectModule(string conStr)
        {
            connectionString = conStr;
        }
        public override void Load()
        {
            Bind<IContext>().To<DbContext>().InRequestScope()
            .WithConstructorArgument("connection", new SqlConnection(connectionString));
            Bind<IUnitOfWork>().To<AdoNetUnitOfWork>().InRequestScope();
        }
    }
C#
1
2
3
4
5
6
7
public class ServicesNinjectModule : NinjectModule
    {
        public override void Load()
        {
            this.Bind<IUserService>().To<UserService>().InRequestScope();
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
public static class NinjectRegistration
    {
        public static void Run()
        {
            var DalModule = new DALNinjectModule(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
            var ServicesModule = new ServicesNinjectModule();
 
            var kernel = new StandardKernel(DalModule, ServicesModule);
            DependencyResolver.SetResolver(new CustomDependecyResolver(kernel));
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
public class DbContext : IContext, IDisposable
    {
        private readonly IDbConnection connection;
        public IDbTransaction Transaction { get; private set; }
        private readonly ReaderWriterLockSlim rwls = new ReaderWriterLockSlim();
 
        public DbContext(IDbConnection connection)
        {
            connection.Open();
            this.connection = connection ?? throw new ArgumentException("Connection is empty");
            Transaction = this.connection.BeginTransaction();
        }
C#
1
2
3
4
5
public AdoNetUnitOfWork(IContext context)
        {
            this.context = context;
            transaction = context.Transaction;
        }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2019, 17:55
Ответы с готовыми решениями:

Как внедрить зависимость в RoleProvider через ninject
У меня есть UserService через который я проверяю роль заданного пользователя. Мой провайдер ролей...

Как правильно сделать зависимость двух DropDownList
Добрый день всем. В общем пытаюсь сделать следующее: Есть 2 DropDownList(DDL) 1 - означает...

Как сделать полную копию проекта (MVC) или правильно построить зависимость проектов?
В общем столкнулся с такой проблемой: решил создать свое ядро под развертывание проектов. Первая...

Как правильно организовать конвейер linq2sql для фильтрации
Я , уверен,изобретаю велосипед, но пока на просторах Гугла не встретил ничего путного. Задача...

Как правильно организовать сбор данных через IBQuery
Ребят, подскажите, не могу ни как найти решение вопроса( В DBF есть таблица с двумя строками в...

4
IamRain
1407 / 1254 / 395
Регистрация: 02.08.2011
Сообщений: 3,723
13.01.2019, 20:00 2
Контекст сам открывает подключения при необходимости, проброс IDbConnection в конструктор не нужен, а уж тем более мгновенное его открытие.
0
privetprivet
0 / 0 / 0
Регистрация: 03.11.2018
Сообщений: 37
13.01.2019, 20:51  [ТС] 3
Цитата Сообщение от IamRain Посмотреть сообщение
Контекст сам открывает подключения при необходимости, проброс IDbConnection в конструктор не нужен, а уж тем более мгновенное его открытие.
Ну мне нужно транзакцию передать в контексте. без открытого подключения этого не сделать. Но не понял как контекст сам будет открывать?
0
sau
2022 / 1635 / 271
Регистрация: 22.07.2011
Сообщений: 6,210
Завершенные тесты: 1
14.01.2019, 23:56 4
Цитата Сообщение от privetprivet Посмотреть сообщение
Ну мне нужно транзакцию передать в контексте. без открытого подключения этого не сделать.
Подключение нужно открывать перед запросом и сразу закрывать после . так же как и транзакцию , особенно транзакцию нельзя держать долго открытой т.к это блокирующая операция.
0
privetprivet
0 / 0 / 0
Регистрация: 03.11.2018
Сообщений: 37
25.01.2019, 00:36  [ТС] 5
Цитата Сообщение от sau Посмотреть сообщение
Подключение нужно открывать перед запросом и сразу закрывать после . так же как и транзакцию , особенно транзакцию нельзя держать долго открытой т.к это блокирующая операция.
я понимаю. но там так и должно быть. все происходить должно именно тогда, когда идет обращение к репозиторию. но из-за внедрения зависимостей, при запуске приложения, отслеживая дебагером, проходится вхолостую по конструкторам и открывает подключения. это еще до первого обращения к репозиторию
0
25.01.2019, 00:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2019, 00:36

Как правильно организовать структуру отправки заявок со страницы через форму
Здравствуйте. Организовал средствами html и css три таба. По нажатию на каждый всплывает форма с...

Зависимость от частоты(как организовать?)
Добрый день! Начал недавно, по надобности, осваивать matlab, и возник вопрос: Мне надо провести...

Как правильно организовать БД?
Есть база данных о предприятии. В ней есть данные об отделах и о сотрудниках. С сотрудниками всё...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru