Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架中没有外键的一对多关系?_C#_Entity Framework - Fatal编程技术网

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

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,

这个标题可能有误导性,但现在我似乎无法为我正在寻找的东西制定正确的词语

目前,实体A有许多实体B,但实体B不包括实体A外键

这是怎么回事

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

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,我们在这里使用的是实体框架吗?您是先使用代码,还是映射现有数据库?我想我需要创建一个单独的模型来进行映射。谢谢我想看看是否还有人有其他建议。