我首先使用实体框架数据库,但我想从代码第一范式复制以下行为:
在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