C# EF 4.1跳过成员集合的字典表

C# EF 4.1跳过成员集合的字典表,c#,ef-code-first,entity-framework-4.1,C#,Ef Code First,Entity Framework 4.1,要为这个找到一个合适的标题有点困难。 我认为这是一个基本问题,但我找不到解决办法 public class Car { ... public ICollection<Parts> Parts { get; set; } } public class Parts { ... } 公车 { ... 公共ICollection部分{get;set;} } 公共类零件 { ... } 应用程序具有零件的“存储库”或“目录”。 编辑汽车实体时,我可以从该存储库中选择添加零件

要为这个找到一个合适的标题有点困难。
我认为这是一个基本问题,但我找不到解决办法

public class Car
{
  ...
  public ICollection<Parts> Parts { get; set; }
}

public class Parts
{
  ...
}
公车
{
...
公共ICollection部分{get;set;}
}
公共类零件
{
...
}
应用程序具有零件的“存储库”或“目录”。 编辑汽车实体时,我可以从该存储库中选择添加零件

默认映射有两个问题:

  • 我希望能够从目录中删除零件a,而不将其从目录中删除 汽车
  • 如果我只向汽车手动添加一个零件,它将出现在“目录”中,而“目录”不应该出现
  • 换句话说,我需要单独的部分数据库表:
    1.与特定汽车相关的零件(汽车类零件(集合)成员) 2.供目录选择


    提前感谢

    在零件实体中添加一个名为“ShowInCatalog”的列,并将您不想显示在目录中的列设置为0(因此目录将执行查询,以获取该值为1的所有内容)。

    感谢您的回复。好的,这很明显,但它违背了代码优先的方法。由于持久性,我希望将对模型所做的修改保持在最低限度。我不想在我的模型中实现任何与持久性相关的业务逻辑。我可以想到某种映射,它会告诉EF将与汽车相关的零件集合成员存储在表“CarParts”中,并将零件的独立实例存储在表“parts”中。如果我们从面向对象的角度考虑这一点,我认为集合成员与其他集合成员是不同的实体,它们只是共享一个共同的结构(类型)@sand,或者确实如此,但这是一个很好的SQL表设计。抽象在某种程度上总是有漏洞的,而您打算做的是在其他地方创造大量额外的复杂性,除了“代码优先方法”之外没有任何好处。一个零件就是一个零件,不管他们是否在车里,他们都是一样的。因此,它是一个实体。这也避免了重复。有了其中两个,如果你把一个零件放进汽车里(还在目录里),你现在就有了两个相同零件的条目。这不是个好主意。