实体框架中没有外键的一对多关系?

时间:2013-01-11 03:44:47

标签: c# entity-framework

标题可能会产生误导,但现在我似乎无法为我正在搜索的内容制定正确的词语。

目前,实体A有许多实体B,实体B将包含实体A外键。

这是如何运作的?

首先,我想在我的模型中使用以下属性。

public virtual ICollection<B> Bs { get; set; }

但是,如果B有外键给A。建议?或者这不是一件事吗?如果B没有外键,我必须创建一个单独的模型来关联A和B吗?

1 个答案:

答案 0 :(得分:1)

我不知道为什么实体B上没有FK到实体A,但没有任何参考约束,两个实体之间就不会有遍历(即你不能提取所有B的给定A,你不能提取给定B的A)。我能告诉你的最简单的方法是添加FK,但如果不可能,你需要创建另一个实体,它只是你的实体B的代理/地图.BProxy实体应该与1-1有关系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创建遍历关系的查询。