如何先在代码中建立三重关系Entity Framework
How to make a triple relationship in code first Entity Framework
如何在 EF 中建立三重关系?
我打算做的是这样的:
Table Foo: (ID INT TEXT VARCHAR)
Table Coo: (ID INT TEXT VARCHAR)
Table Boo: (ID INT TEXT VARCHAR)
Table FooCooBoo: (FKFoo INT FKCoo INT FKBoo INT)
我预计使用下面的代码可以实现:
public class Foo
{
public int Id { get; set; }
public string Text { get; set; }
public virtual ICollection<Boo> Boos { get; set; }
public virtual ICollection<Coo> Coos { get; set; }
}
public class Boo
{
public int Id { get; set; }
public string Text { get; set; }
public virtual ICollection<Foo> Foos { get; set; }
public virtual ICollection<Coo> Coos { get; set; }
}
public class Coo
{
public int Id { get; set; }
public string Text { get; set; }
public virtual ICollection<Boo> Boos { get; set; }
public virtual ICollection<Foo> Foos { get; set; }
}
但输出结果是,对于每个 Icollection
,EF 都会创建一个简单的多对多 table。
那可能吗?使用 EF 创建三重关系?
可能是:
public class FooCooBoo
{
[Key, ForeignKey("Foo")]
public int FooId { get; set; }
[Key, ForeignKey("Coo")]
public int CooId { get; set; }
[Key, ForeignKey("Boo")]
public int BooId { get; set; }
public virtual Foo { get; set; }
public virtual Boo { get; set; }
public virtual Coo { get; set; }
}
然后您必须在某些配置中设置导航属性 类。
如何在 EF 中建立三重关系? 我打算做的是这样的:
Table Foo: (ID INT TEXT VARCHAR)
Table Coo: (ID INT TEXT VARCHAR)
Table Boo: (ID INT TEXT VARCHAR)
Table FooCooBoo: (FKFoo INT FKCoo INT FKBoo INT)
我预计使用下面的代码可以实现:
public class Foo
{
public int Id { get; set; }
public string Text { get; set; }
public virtual ICollection<Boo> Boos { get; set; }
public virtual ICollection<Coo> Coos { get; set; }
}
public class Boo
{
public int Id { get; set; }
public string Text { get; set; }
public virtual ICollection<Foo> Foos { get; set; }
public virtual ICollection<Coo> Coos { get; set; }
}
public class Coo
{
public int Id { get; set; }
public string Text { get; set; }
public virtual ICollection<Boo> Boos { get; set; }
public virtual ICollection<Foo> Foos { get; set; }
}
但输出结果是,对于每个 Icollection
,EF 都会创建一个简单的多对多 table。
那可能吗?使用 EF 创建三重关系?
可能是:
public class FooCooBoo
{
[Key, ForeignKey("Foo")]
public int FooId { get; set; }
[Key, ForeignKey("Coo")]
public int CooId { get; set; }
[Key, ForeignKey("Boo")]
public int BooId { get; set; }
public virtual Foo { get; set; }
public virtual Boo { get; set; }
public virtual Coo { get; set; }
}
然后您必须在某些配置中设置导航属性 类。