Я провел некоторый поиск, но не смог выяснить, как связать контексты данных LinqToSql с указанными строками соединения в разные репозитории.
Это связывание выполняется в global.ajax при регистрации маршрутов.Я использую довольно стандартный шаблон репозитория, чтобы отделить инфраструктуру LinqToSql от моего приложения, чтобы я мог изменить технологическую инфраструктуру в будущем (NHibernate, EntityFramework и т. Д.).Кроме того, сделайте мой код легко тестируемым и поддающимся проверке модулем.
У меня есть что-то вроде этого.
string desktopConnectionString = ConfigurationManager.ConnectionStrings["Desktop"].ConnectionString;
string messagingConnectionString = ConfigurationManager.ConnectionStrings["MessageQueue"].ConnectionString;
string usersConnectionString = ConfigurationManager.ConnectionStrings["Users"].ConnectionString;
// Map linqToSql entity types to interfaces
TableMapper typeFinder = new TableMapper();
typeFinder.Define<EzsDashboard>().As<IDashboard>();
typeFinder.Define<EzsDashboardGadget>().As<IGadget>();
typeFinder.Define<EzsDashboardGadgetAssignment>().As<IGadgetAssignment>();
...
IDesktopRepository dr = new DesktopRepository(new LinqToSqlDataSource(new DataContext(desktopConnectionString), typeFinder)));
Bind<IDesktopRepository>().ToConstant(dr).InRequestScope();
IUserRepository ur = new UserRepository(new LinqToSqlDataSource(new DataContext(usersConnectionString), typeFinder)));
Bind<IUserRepository>().ToConstant(ur).InRequestScope();
IMessageRepository mr = new MessageRepository(new LinqToSqlDataSource(new DataContext(messagingConnectionString), typeFinder)));
Bind<IMessageRepository>().ToConstant(mr).InRequestScope();
Хотя это работает физически.Я нахожу данные в моем приложении asp.net MVC часто возвращается устаревшим.Например, я добавлю гаджет на панель инструментов, которую он отображает, и если я проверю базу данных, она была правильно сохранена в базе данных.Я перезагружаю страницу, и приборная панель ничего не показывает.При щелчке по приложению иногда происходит его «обновление», и сохраненные данные отображаются.
Еще один способ увидеть это, если я внесу изменения в свой файл web.config и инициирую повторную загрузку приложения,Когда я нажимаю на панель управления, все отображается точно так, как и должно.
Может кто-нибудь помочь с привязкой строки соединения-> DataContext-> LinqToSqlDataSource-> DomainRepository