Entity framework 如何首先通过设置忽略实体框架代码中的实体
假设我有4门课:Entity framework 如何首先通过设置忽略实体框架代码中的实体,entity-framework,entity-framework-4,Entity Framework,Entity Framework 4,假设我有4门课: public class Component {} public class SubComponent1 : Component {} public class SubComponent2 : Component {} public class Container : Component { public List<Component> components { get; set;} } 我不想在数据库中存储子组件2。我希望在整个应用程序中使用它作为普通的P
public class Component {}
public class SubComponent1 : Component {}
public class SubComponent2 : Component {}
public class Container : Component {
public List<Component> components { get; set;}
}
我不想在数据库中存储子组件2。我希望在整个应用程序中使用它作为普通的POCO,只希望在尝试保存到数据库时忽略它。
到目前为止,我尝试的是在我的DbContext OnModelCreating方法中为它设置Ignore:
dbModelBuilder.Ignore<SubComponent2>();
然后试图在数据库中保存一些也包含子组件2的结构,希望子组件2被忽略,因此不会保存。
基本上是这样的:
var someContainer = new Container{ components = new List<Component>{
new SubComponent1(), new SubComponent2()
};
context.Containers.Add(someContainer);
希望只有包含子组件1的容器才能访问数据库。
我得到的是
找不到EntityType“SubComponent2”的映射和元数据信息
我知道我可以简单地手动删除所有子组件2-s,然后将容器添加到上下文中,保存子组件2-s,然后以某种方式重新附加子组件2-s,但当我希望entity framework能够为我解决这一问题时,在更大的结构上这似乎是太多的开销
您知道有什么好方法可以解决这个问题吗?在我的DbContext中,dbModelBuilder设置可能会有一些更改?我认为目前不支持这种方法。可以忽略派生实体,使其不被映射,但在保存期间不能在导航属性中使用它。我没有测试它,但我几乎可以肯定EF没有逻辑跳过继承映射中被忽略的实体,因为被忽略的实体根本不属于持久化集合。thx谢谢你的回答,尽管这不是我所希望的。。我将不得不用艰难的方式去做。