Наследование между сущностями EF4 из разных сборок - PullRequest
1 голос
/ 10 декабря 2010

Скажем, я создаю приложение для корпорации. Одна из сущностей - это сотрудники, а в отделе кадров хранятся базовые данные о сотрудниках. Затем сотрудники отдела продаж хотят войти, и их работа размещается в другой сборке. Теперь даже SalesPerson является сотрудником, поэтому имеет смысл наследовать от сущности Employee, но я не знаю, как это сделать ...?

Может быть плохая идея использовать несколько контекстов сущностей для всего, что я знаю? Я открыт для предложений ...:)

Ответы [ 2 ]

1 голос
/ 10 декабря 2010

Да, вы можете поместить свои объекты POCO в разные сборки и построить наследование поверх этих объектов, но вам все еще нужен один файл сопоставления ObjectContext и EDMX, который будет охватывать все эти объекты.Вы не можете просто разделить вашу модель наследования на несколько файлов сопоставления.

IMO единственный способ - дублировать некоторые сопоставления между файлами EDMX для разных модулей.Так, например, в вашем случае модуль HR будет иметь EDMX с отображением сотрудников, а модуль продаж будет иметь собственный EDMX с таким же отображением сотрудников и унаследованным отображением сотрудников продаж.

1 голос
/ 10 декабря 2010

Это можно сделать, да, но не с генерацией кода EF по умолчанию.

Вам нужно будет использовать POCO.

У нас также есть наши POCO в отдельной сборке, все в порядке.

Прочтите POCO с EF4. Вы можете использовать шаблон T4 для генерации классов, а затем скопировать и вставить этот код в отдельные файлы в другой сборке (я понятия не имею, почему T4 не поддерживает генерацию файлов для каждой сущности).

Добавьте ссылку на вашу сборку POCO из вашего проекта EF, и EF будет использовать основанное на соглашениях отображение для использования POCO.

Я не уверен на 100%, будет ли он работать с разделенными сборками - вы можете столкнуться с проблемами, если пространство имен для сборок отличается. (что они будут).

Стоит выстрел. Сначала используйте 1 сборку с сопоставлением POCO, убедитесь, что она работает, затем разбейте сборку и перейдите оттуда.

Godspeed. :)

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