实体框架DB首先:将关联表转换为导航属性

时间:2013-05-14 20:47:56

标签: entity-framework entity-framework-5 .net-4.5 ef-database-first database-first

我正在使用Entity Framework Database First,但我想从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; }
}

并且数据库将生成和Associative表来表示多对多的关系。

我正在使用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关于现有表来创建多对多导航属性?

1 个答案:

答案 0 :(得分:0)

如果您使用流畅的api文档中所述映射复合键会不会更好? http://msdn.microsoft.com/en-us/data/jj591617.aspx