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