Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 如何首先通过设置忽略实体框架代码中的实体_Entity Framework_Entity Framework 4 - Fatal编程技术网

Entity framework 如何首先通过设置忽略实体框架代码中的实体

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

假设我有4门课:

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谢谢你的回答,尽管这不是我所希望的。。我将不得不用艰难的方式去做。