Создание интерфейсов из базы данных entity framework первый автоматически сгенерированный код

Я использую MVC3, C# 4.0 и Entity Framework в Visual Studio 2010. Я генерирую свой edmx и разработан.CS файлы из базы данных. Затем я создаю интерфейсы из сущностей в конструкторе.cs-файл как часть моей структуры nLayer.

исходный код

public partial class DataEntrySummary : EntityObject

который затем становится

public partial class DataEntrySummary : EntityObject, Mb.Interface.IDataEntrySummary

меня беспокоит то, что при изменении базы данных (и это будет), и я регенерирую файлы edmx, я потеряю весь интерфейс определение.

есть ли лучший способ достижения того же результата без необходимости повторного создания интерфейсов.

спасибо

3 ответов


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

public partial class DataEntrySummary : Mb.Interface.IDataEntrySummary
{
}

эти файлы не будут затронуты, когда EF обновляет модель.


вы направляетесь в правильном направлении. Но для сохранения интерфейсов после каждого обновления EDMX вам нужно будет настроить файлы T4.

вы можете взглянуть на настроенные файлы T4 изhttps://entityinterfacegenerator.codeplex.com/ Они генерируют 1 интерфейс для каждого из вашего класса, так что вы можете легко издеваться и тестировать их отдельно.

Итак, каждый раз, когда вы добавляете новую таблицу или поле, вы можете просто выполнить их шаблоны T4 вместе с те, которые предоставляются Microsoft для создания типов EF.

с уважением.


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

другой вариант-создать прокси-класс, который реализует определенный интерфейс и наследует от модели.