标题可能具有误导性,但现在我似乎无法为我正在寻找的内容制定正确的词。
就目前而言,实体 A 有许多实体 B,但实体 B不会包含实体 A 的外键。
这是如何运作的?
起初,我想在我的模型中使用以下属性。
public virtual ICollection<B> Bs { get; set; }
但那是如果 B 有 A 的外键。建议?或者这不是一件事?如果 B 没有外键,我是否必须创建一个单独的模型来关联 A 和 B?
标题可能具有误导性,但现在我似乎无法为我正在寻找的内容制定正确的词。
就目前而言,实体 A 有许多实体 B,但实体 B不会包含实体 A 的外键。
这是如何运作的?
起初,我想在我的模型中使用以下属性。
public virtual ICollection<B> Bs { get; set; }
但那是如果 B 有 A 的外键。建议?或者这不是一件事?如果 B 没有外键,我是否必须创建一个单独的模型来关联 A 和 B?
我不知道为什么实体 B 到实体 A 上不能有 FK,但是如果没有任何类型的引用约束,两个实体之间就不能遍历(即你不能提取每个给定 A 的所有 B,并且您不能为给定的 B 提取 A)。我可以告诉您的最简单的方法是添加该 FK,但如果不可能,您将需要创建另一个实体,该实体仅充当您的实体 B 的代理/映射。BProxy 实体应与B 实体。
public class BProxy
{
[Key]
public int Id {get; set;}
[Required]
public int EntityBId {get; set;}
public virtual EntityB {get; set;}
[Required]
public int EntityAId {get; set;}
public virtual EntityA {get; set;}
}
然后,您的实体 A 将拥有一组 BProxy 对象而不是 B 对象
public virtual ICollection<BProxy> BProxies { get; set; }
这样,您可以创建通过 LINQ 双向遍历关系的查询。