Entity framework 4 如何首先在实体框架代码中,将一个具有2个主键的纯联接表建模为另一个具有3个主键的纯联接表

Entity framework 4 如何首先在实体框架代码中,将一个具有2个主键的纯联接表建模为另一个具有3个主键的纯联接表,entity-framework-4,entity-framework-4.1,ef-code-first,code-first,entity-relationship,Entity Framework 4,Entity Framework 4.1,Ef Code First,Code First,Entity Relationship,我如何首先使用代码对一个纯连接到另一个具有三个主键的纯连接表的关系建模 示例代码: public class ItemA { public int ItemAId { get; set; } public string Name { get; set; } public ICollection<ItemB> ItemBs { get; set; } } public class ItemB { public int ItemBId { get; s

我如何首先使用代码对一个纯连接到另一个具有三个主键的纯连接表的关系建模

示例代码:

public class ItemA
{
    public int ItemAId { get; set; }
    public string Name { get; set; }
    public ICollection<ItemB> ItemBs { get; set; }
}


public class ItemB
{
    public int ItemBId { get; set; }
    public string Name { get; set; }
    public ICollection<ItemA> ItemAs { get; set; }
    public ICollection<ItemC> ItemCs { get; set; }
}

public class ItemC
{
    public int ItemCId { get; set; }
    public String Name { get; set; }
    public ICollection<ItemB> ItemBs { get; set; }
}

public class TestDbContext : DbContext
{
    public DbSet<ItemA> ItemA { get; set; }
    public DbSet<ItemB> ItemB { get; set; }
    public DbSet<ItemC> ItemC { get; set; }


    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }

}
公共类项目a
{
公共int ItemAId{get;set;}
公共字符串名称{get;set;}
公共ICollection ItemBs{get;set;}
}
公共类项目B
{
公共int ItemBId{get;set;}
公共字符串名称{get;set;}
公共ICollection项为{get;set;}
公共ICollection项{get;set;}
}
公共类项目C
{
公共int ItemCId{get;set;}
公共字符串名称{get;set;}
公共ICollection ItemBs{get;set;}
}
公共类TestDbContext:DbContext
{
公共DbSet ItemA{get;set;}
公共DbSet ItemB{get;set;}
公共DbSet ItemC{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
}
}
EF为(
ItemC
ItemB
)创建了一个联接表,并为(
ItemB
ItemA
)创建了另一个联接表,我想将(
ItemA
ItemB
)联接到另一个联接表,即链接
ItemA
ItemB
ItemC
一起

如何使用三个主键(
ItemA
Itemb
ItemC
)创建到另一个表的关系/映射联接


另外,这个表真的是一个需要自己的类的实体,以便实体框架可以创建第三个表吗?(我希望避免为只包含主键的对象创建类,例如,创建一个名为
ItemAItemBItemC
的类,该类只包含主键。)

这是否意味着您希望在表a-B和该表之间建立FK关系(例如,使用3个PK连接表a-B)?如果是这样,您甚至需要在模型中将A-B表作为一个实体公开,而不仅仅是3-PK表,因为A-B表将不仅仅是A和B之间的连接。是的,我已经通过创建一个ItemCItemB类并向ItemC类添加一个ICollection来做到这一点(从ItemC中删除ICollection时,我认为with EF join relationships不应该有类,因为您会有一个只包含主键的类,使用它看起来很奇怪。这是否意味着您希望在表a-B和这个表之间建立FK关系(例如,连接表a-B和具有3个PKs的表)?如果是这样,您甚至需要公开a-B表。)作为模型中的一个实体,不仅仅是3-PK表,因为A-B表不仅仅是A和B之间的连接。是的,我已经创建了一个ItemCItemB类并向ItemC类添加了一个ICollection(从ItemC中删除ICollection时,我认为使用EF连接关系不应该有类,因为您将有一个只包含主键的类,使用它看起来很奇怪。