Репозиторий MVC3 EF4 POCO / Ошибка соединения с UnitOfWork - PullRequest
7 голосов
/ 02 ноября 2010

Я внедрил шаблоны T4 Repository / Unit of Work от Gil Fink для использования в проекте, над которым я работаю, мой первый полномасштабный проект с использованием MVC. Однако я получаю сообщение об ошибке, которого не было раньше, и не могу его отследить. Я не знаю, если это что-то с шаблонами, или просто настройка где-то, что я установил неправильно, но я сейчас в замешательстве. Я надеялся, что кто-нибудь сможет пролить свет на ситуацию.

Вот мои настройки фреймворка:

  • MVC 3 Beta
  • SQL Server 2008 R2
  • Ninject v2.1.0.76
  • EF4 POCO
  • 3 проекта в решении: Data, Entities и приложение MVC.

Я делаю первый дизайн БД и использую EF для создания классов POCO через Microsoft ADO.NET POCO Entity Generator. Затем я использую инструмент T4, чтобы создать репозиторий и единицы работы. С этой настройкой и всеми сгенерированными классами и репозиториями я внедряю ее в приложение MVC, используя Ninject для DI. На этом этапе я использую метод MVC 2, использующий фабрику контроллеров, и в дальнейшем планирую изменить его на метод IDependencyResolver.

Когда я использую жестко запрограммированный репозиторий Mock, приложение работает должным образом, однако, когда я изменяю его на использование привязки IRepository, я получаю следующую ошибку: «Предоставленное соединение недопустимо, так как содержит недостаточно информации о сопоставлении или метаданных Имя параметра: соединение " Это указывает на то, что строка подключения EF к соединению с БД неверна, однако это строка по умолчанию, созданная шаблоном ADO.NET Entity Data Model. Возможно, это тоже что-то с настройками .edmx.

Вот моя строка подключения (используя удобный макет базы данных Nerd Dinner)

<add name="NerdDinnerEntities"
connectionString="metadata=
res://*/Model1.csdl|
res://*/Model1.ssdl|
res://*/Model1.msl;
provider=System.Data.SqlClient;
provider connection string=&quot;Data Source=Wayne;Initial Catalog=NerdDinner;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True&quot;"
providerName="System.Data.EntityClient" />

Любой, у кого есть какие-либо мысли / подсказки и т. Д., Буду очень признателен.

Edit: вот ссылка на шаблон T4, который я использую: Шаблон репозитория и единицы работы T4 для Entity Framework

Edit2: Ошибка связана с тем, что я использую DI с Unit Of Work. когда я удаляю DI, и вручную имею зависимости в контроллерах, это работает. Когда я пытаюсь реализовать DI, он ломается.

Ответы [ 2 ]

3 голосов
/ 02 ноября 2010
res://*/Model1.csdl|

Это * подстановочный знак, который говорит EF "сканировать все сборки на наличие ресурса".Скорее всего, это сканирование не находит сборку по какой-либо причине.

Измените * на свое имя сборки:

res://My.Assembly.Name/Model1.csdl|
1 голос
/ 25 июня 2012

Если вы используете NuGet для установки зависимости Ninject, ему нравится устанавливать привязки DI в NinjectWebCommon.cs. Если загрузка ваших привязок DI требует создания экземпляра Entity Framework, это происходит слишком рано в жизненном цикле приложения, и приложение не может правильно интерпретировать строку подключения.

Если вы думаете, что это может быть то, что с вами происходит, смотрите мой ответ здесь для получения дополнительной информации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...