我正在使用代码第一实体框架来创建数据库。我有两个表,Assignment和AssignmentDetails,都有一个名为ID的主键。当EF创建表时,分配ID将成为标识,但AssignmentDetails ID不是。
以下是课程:
分配
public class Assignment
{
public int ID { get; set; }
public string Line { get; set; }
public AssignmentDetails Details { get; set; }
}
AssignmentDetails
public class AssignmentDetails
{
public int ID { get; set; }
public string Details { get; set; }
[Required]
public int AssignmentID { get; set; }
public virtual Assignment Assignment { get; set; }
}
这是我的OnModelCreatingmethod
modelBuilder.Entity<Assignment>()
.HasOptional(a => a.Details)
.WithRequired(d => d.Assignment);
我不确定我是否正确设置了1到0..1的关系,这可能导致身份问题。
答案 0 :(得分:0)
嗯,在这种情况下,其中一个ID是 PK IDENTITY ,另一个是 PK / FK (主键和外键同时存在) ,哦,是的)。
PK / FK与来自另一个实体的PK相关(它同时是实体上的PK,另一个实体的PK上的FK,即IDENTITY)。
PK的目的是唯一的,在这种情况下,它将是唯一的(因为你有1到0..1的关系)。
EF,懒惰,避免创造“无用的”PK和“无用的”FK,因为PK足以承担这两个角色。
这在开始时有点令人惊讶(并不总是你想要的),但它是连贯的。
在实践中:
Assignment1有Id ... 1.
AssignmentDetail只能有一个分配。因此,您可能有一个唯一的自动增量ID作为详细信息的pk +分配时的FK,或者只使用...分配的ID,它始终是唯一的(IDENTITY)。