C# 实体框架中没有外键的一对多关系?
这个标题可能有误导性,但现在我似乎无法为我正在寻找的东西制定正确的词语 目前,实体A有许多实体B,但实体B不包括实体A外键 这是怎么回事 首先,我想在我的模型中使用以下属性C# 实体框架中没有外键的一对多关系?,c#,entity-framework,C#,Entity Framework,这个标题可能有误导性,但现在我似乎无法为我正在寻找的东西制定正确的词语 目前,实体A有许多实体B,但实体B不包括实体A外键 这是怎么回事 首先,我想在我的模型中使用以下属性 public virtual ICollection<B> Bs { get; set; } 公共虚拟ICollection Bs{get;set;} 但是如果B有一个a的外键的话。建议?或者这不是一件事?如果B没有外键,我必须创建一个单独的模型来关联a和B吗?我不知道为什么实体B和实体a之间不能有一个FK,
public virtual ICollection<B> Bs { get; set; }
公共虚拟ICollection Bs{get;set;}
但是如果B有一个a的外键的话。建议?或者这不是一件事?如果B没有外键,我必须创建一个单独的模型来关联a和B吗?我不知道为什么实体B和实体a之间不能有一个FK,但是如果没有任何类型的引用约束,两个实体之间就不能进行遍历(也就是说,不能针对给定的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; }
公共虚拟ICollection BProxies{get;set;}
通过这种方式,您可以创建通过LINQ双向遍历关系的查询。标签上写着asp.net,我们在这里使用的是实体框架吗?您是先使用代码,还是映射现有数据库?我想我需要创建一个单独的模型来进行映射。谢谢我想看看是否还有人有其他建议。