我正在研究将大型项目迁移到实体框架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; }
}
}
而这正是该项目的布局看起来像:
People - People.Education - People.LawEnforcement http://img51.imageshack.us/img51/7293/efdemo.png
一些客户的应用程序将使用People.LawEnforcement中的类,其他用户将使用People.Education,并且一些将使用两者。我只运送用户需要的组件。所以汇编有点像插件,它们为核心应用增加了特性。
在Entity Framework中是否有支持这种情况的方法?
基于this SO question我觉得这样的事情可能工作:
ctx.MetadataWorkspace.LoadFromAssembly(typeof(PoliceOfficer).Assembly);
但是,即使是工作那么它的接缝,仿佛我的EDMX文件将需要了解的所有项目。我宁愿让每个项目都包含该项目中类的元数据,但我不确定这是否可行。
如果这是不可能的实体框架是否有另一种解决方案(NHibernate的,活动记录等),将工作?
它看起来像Code-Only就是要走的路。只能将代码与EDMX模型结合使用?例如在我的主项目中有一个EDMX(在我的例子中是Person),然后在其他项目中执行代码? – TonyB 2009-12-18 16:30:50
那么Code-Only背后的想法就是没有EDMX。当然,在引擎盖下,会生成相同的信息,您可以使用WriteEDMX()方法挂起ContextBuilder将其转换为EDMX格式。因此,我的建议是在任何地方使用Code-Only,包括您的主项目,并且只有在需要可视化模型时才使用WriteEDMX。 – 2009-12-18 20:43:46