Ben*_*Sch 5 inheritance entity-framework table-per-hierarchy entity-framework-5
我正在使用Entity Framework 5.0,其中包含代码优先方法以及由Table Per Hierarchy表示的业务对象的继承.
我想要有以下结构:
//Assembly 'DataAccess'
public class MyDbContext : DbContext
{
DbSet<AbstractClass> CommonObjects.AbstractClasses { get; set; }
}
//Assembly 'CommonObjects'
public abstract class AbstractClass
{
//implementation
}
//Assembly 'DerivedObjects'
public class DerivedClass : AbstractClass
{
//implementation
}
Run Code Online (Sandbox Code Playgroud)
在运行时,第一次尝试访问DbContext时,编译器会抛出InvalidOperationException:
抽象类型"CommonObjects.AbstractClass"没有映射的后代,因此无法映射.从模型中删除"CommonObjects.AbstractClass",或者将从"CommonObjects.AbstractClass"派生的一个或多个类型添加到模型中.
这种情况甚至可能吗?如果是的话,我做错了什么?
感谢您提前的答案.
本
附加信息:
也许我应该更具体一点:
我有一个包含我的抽象业务对象的程序集(只有抽象).具体实现(包含逻辑)保存在负责的程序集中,因为它们的逻辑依赖于该程序集中的其他类.问题是,我希望能够在persistance层中存储这些conrete实现.但为此目的,EF必须知道这些类型才能实现映射.但我不想让持久层依赖于我的业务逻辑层 - 只有抽象.
这就是我尝试直接从业务对象层将派生对象添加到DbContext的原因.
例:
AbstractClass derivedClass = new DerivedClass();
MyDbContext.AbstractClasses.Add(derivedClass);
Run Code Online (Sandbox Code Playgroud)
但随后抛出上述例外情况.我只是想不出一个好的结构来实现这一目标.
| 归档时间: |
|
| 查看次数: |
646 次 |
| 最近记录: |