1

我有以下实体:

public class Category
{
  public int ID { get; set; }    
  public int? ParentID { get; set; }
  public string Name{ get; set; }
  public virtual Category Parent { get; set; }
}  

我试图定义一个关系: aCategory可以有一个父类别。
我已经定义了主键:

HasKey(m => m.ID);  

我读过这个例子,其中包括一对零或一关系,但我无法准确理解HasRequired实体在关系中是可选的。

4

2 回答 2

0

我认为一个附带的问题是您不能将完全相同的类引用到自身作为 EF 中的父级,您可以使用 Projection 以便为同一类型具有不同的属性。

子参考中的 HasOptional 与说我可能有父母或没有父母的效果相同

于 2013-02-03T15:22:27.693 回答
0

在您引用的示例中,一个孩子有一个ParentId既是主键又是外键的。当父母和孩子是不同的实体(和不同的数据库表)时,这是可以的,但当它们是自引用时则不行。Category必须有一个既是主要的又是外国的ID。但是主键应该是唯一的,因此实际上没有空间让 1:1 的孩子共享相同的键。

你能做什么?我认为唯一的选择是将关联映射为 1:n 并强制执行 n 不能大于 1 的业务规则。请注意,这不是 EF 限制。没有可以想象的关系数据库模型将自引用关联限制为 1:1。

于 2013-02-03T21:21:21.170 回答