5

我首先使用实体​​框架数据库,但我想从 Code First 范例中复制以下行为:

在 Entity Framework Code First 中,您可以执行以下操作:

public class Thing
{
    public int ID { get; set; }
    ICollection<Stuff> Stuffs { get; set; }
}

public class Stuff
{
    public int ID { get; set; }
    ICollection<Thing> Things { get; set; }
}

并且数据库会生成关联表来表示多对多关系。

我将 Database First 与旧数据库一起使用。我拉入实体,它包括表示我们两个表之间的多对多关系的关联表。

由于关联表是作为实体包含的,因此导航属性如下:

public class Thing
{
    public int ID { get; set; }
    public ICollection<ThingStuff> ThingStuffs { get; set; }
}

public class ThingStuff
{
    public int ThingID { get; set; }
    public int StuffID { get; set; }
    ICollection<Thing> Things { get; set; }
    ICollection<Stuff> Stuffs { get; set; }
}

public class Stuff
{
    public int ID { get; set; }
    public ICollection<ThingStuff> ThingStuffs { get; set; }
}

所以要导航,我必须:

var stuff = Thing.ThingStuffs.Select(ts => ts.Stuff);

代替:

var stuff = Thing.Stuffs;

所以问题是:

有没有办法删除表示关联的实体(ThingStuff)并告诉 EntityFramework 现有表以创建多对多导航属性?

4

1 回答 1

0

如流利的 api 文档中所述,如果映射复合键不是更好吗?http://msdn.microsoft.com/en-us/data/jj591617.aspx

于 2013-05-14T21:03:29.957 回答