我首先使用实体框架数据库,但我想从 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 现有表以创建多对多导航属性?