Я планирую перенести большой проект на Entity Framework 4.0, но не уверен, что он справится с моим сценарием наследования.
У меня есть несколько проектов, которые наследуются от объекта в «основном» проекте. Вот пример базового класса:
namespace People
{
public class Person
{
public int age { get; set; }
public String firstName { get; set; }
public String lastName { get; set; }
}
}
и один из подклассов:
namespace People.LawEnforcement
{
public class PoliceOfficer : People.Person
{
public string badgeNumber { get; set; }
public string precinct { get; set; }
}
}
А вот так выглядит макет проекта:
Люди - Люди. Образование - Люди. Правоохранительные органы http://img51.imageshack.us/img51/7293/efdemo.png
Некоторые пользователи приложения будут использовать классы People.LawEnforcement, а другие пользователи будут использовать People.Education, а некоторые будут использовать оба. Я отправляю только те сборки, которые потребуются пользователям. Таким образом, ассемблеры действуют как плагины в том, что они добавляют функции в основное приложение.
Есть ли в Entity Framework поддержка этого сценария?
Исходя из этого ТАКОГО вопроса Я думаю, что-то подобное может сработать:
ctx.MetadataWorkspace.LoadFromAssembly(typeof(PoliceOfficer).Assembly);
Но даже если это сработает, оно будет выглядеть так, как будто мой файл EDMX должен будет знать обо всех проектах. Я бы предпочел, чтобы каждый проект содержал метаданные для классов в этом проекте, но я не уверен, возможно ли это.
Если это невозможно с Entity Framework, есть ли другое решение (NHibernate, Active Record и т. Д.), Которое будет работать?