Я использую Entity Framework 5 в базе данных Первый подход, и я использую edmx-файл.Базовый класс/Entity в EntityFramework 5.0
Большинство моих объектов имеют 6 общих полей. Такие поля, как CreatedAt
, CreatedBy
и т. Д. Теперь я реализовал некоторые функции в качестве расширений, которые могут применяться только к IQueryable
тех объектов, которые имеют общие поля. Но когда я реализую метод расширения, к нему можно получить доступ любым типом IQueryable
, поскольку он набрал T, и я могу только определить, что тип T всегда должен быть одного типа.
Итак, я думал, что могу дать базовый класс сущностям, которые имеют общие поля и определить тип T в качестве базового типа. Но, похоже, я не могу этого сделать.
Любая идея о том, как решить эту проблему или реализовать то, что я объяснил выше?
Спасибо за быстрый ответ. Итак, если я определяю интерфейс вне файла edmx. то где я собираюсь сказать сущности реализовать из этого интерфейса. Нелегко вручную отредактировать все необходимые сущности, поскольку мне придется делать это снова, когда я обновляю файл edmx. – Amila
Вы не трогаете автоматически сгенерированный код. Для этого должны использоваться частичные классы. Вы создаете частичный класс (в папке «Модели») для каждого из ваших объектов в EF. Здесь вы можете определить MetadataType для своих моделей (для аннотации данных). См. Обновленный ответ. – ataravati
Да, я использую MetadataType на данный момент. Но подумал, что может быть простой способ сделать это, например, дать базовый класс сущности, было бы лучше, если бы это позволило также дать интерфейс на диаграмме. Как бы то ни было, это похоже на то, что мне придется определить частичный класс для всех объектов. Спасибо за вашу быструю помощь – Amila