实体框架中没有外键的一对多关系
本文关键字:一对多 关系 框架 实体 | 更新日期: 2023-09-27 17:51:22
标题可能会误导人,但现在我似乎找不到合适的词来表达我正在搜索的内容。
实体A有许多实体B, 但是实体B将不包含实体A的外键。
这是如何工作的?
起初,我想在我的模型中使用以下属性。
public virtual ICollection<B> Bs { get; set; }
但那是如果B有a的外键。建议?或者这不是一件事?如果B没有外键,我必须创建一个单独的模型来关联a和B吗?
我不知道为什么实体B上不能有一个FK到实体A,但是没有任何类型的参考约束,两个实体之间就没有遍历(即你不能提取每个给定A的所有B,你不能提取给定B的A)。我可以告诉你的最简单的方法就是添加FK,但如果不可能,你需要创建另一个实体,它只是作为实体B的代理/映射。BProxy实体应该与B实体有1-1的关系。
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创建遍历关系的查询。