实体框架DB优先:转换关联表到导航属性



我首先使用实体框架数据库,但我想从代码第一范式复制以下行为:

在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; }
}

数据库将生成一个关联表来表示多对多关系。

我使用数据库第一与遗留数据库。我拉入实体,它包括一个关联表,表示两个表之间的多对多关系。

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

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

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

相关内容

  • 没有找到相关文章

最新更新