Отдельные классы объектов POCO и DBContext из модели Entity Framework 6

.net c# entity-framework-6

Вопрос

Я начал использовать версию Entity Framework 6.0.1. Я хочу отделить созданные шаблоны классов DbContext и POCO к другой библиотеке классов от модели. Я провел несколько часов, решив проблему без каких-либо успехов.

Если я создам новую библиотеку классов, добавьте EF 6 EntityObject Generator и заполните следующую переменную шаблона:

SourceCsdlPath = @"..\..\DataAccess\Model.edmx" ,

Получите следующую ошибку в списке ошибок после создания:

Ошибка 2 Выполнение преобразования: System.IO.FileNotFoundException: Не удается найти файл Имя файла: 'C: \ Source \ EFsource \ POCO .... \ DataAccess \ SZOSZRDBModel.edmx'

Трассировка стека сервера: в Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ResolvePath (String path) в System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage (IntPtr md, Object [] args, сервер объектов, объект [] и outArgs) в System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage (IMessage msg)

Исключение было перезапущено в [0]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, Int32 type) в Microsoft.VisualStudio. TextTemplating.ITextTemplatingEngineHost.ResolvePath (String путь) на Microsoft.VisualStudio.TextTemplating31479401930D2C4820ACF71C66B5389A24A5053726798D9718DB676B3FFA30A3454B3CB1EDE2E1C267D5278B1528860C072E81A0E4647BC23993669604048FCD.GeneratedTextTransformation.ApplyUserSettings (UserSettings UserSettings) в Microsoft.VisualStudio.TextTemplating31479401930D2C4820ACF71C66B5389A24A5053726798D9718DB676B3FFA30A3454B3CB1EDE2E1C267D5278B1528860C072E81A0E4647BC23993669604048FCD.GeneratedTextTransformation.TransformText ()

Сообщение об ошибке ясно, но я не знаю, как установить путь к модели без полного абсолютного пути.

Я не уверен, что использование новейшей версии структуры сущностей - лучшая идея ...

Принятый ответ

Абсолютные пути не требуются. Похоже, что ваш относительный путь неверен. Я использую EF6.1, и у меня есть классы POCO в отдельном проекте. Вот как я получил его для работы в VS 2013.

  1. Создал проект библиотеки классов и добавил ADO.NET Entity Data Model . Этот проект будет содержать DB Context .
  2. Добавлен новый EF6.x DbContext Generator в проект DBContext .
  3. Создал новый проект библиотеки классов. Этот проект будет содержать объекты POCO .
  4. Перемещено файл [Project Name]Model.tt из проекта DbContext проект POCO .
  5. Отредактировано файл [Project Name]Model.tt . В строке 5 я изменил:
    const string inputFile = @"SampleModel.edmx";
    чтобы:
    const string inputFile = @"..\DbContext\SampleModel.edmx";
  6. Добавлена ​​ссылка в проекте DbContext проект POCO .

Если вы используете VS 2013, вы можете отлаживать шаблон, чтобы узнать, как разрешается относительный путь.

  1. Добавьте .tt останова в ваш .tt файл.
  2. Щелкните правой кнопкой .tt файл .tt в обозревателе решений и выберите «Debug T4 Template».



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему