我在这个 entity framework 关系中遗漏了一些东西

I'm missing something with this entity framework relationship

我们在项目中使用代码优先。我有两个表,保存时收到此错误消息:

"Unable to determine the principal end of the 'PublicationSystem.Model.TaskAssignment_Task' relationship. Multiple added entities may have the same primary key."

以下是模型:

[Table("TaskItem")]
public class TaskItem
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int TaskId { get; set; }

    //...

    public ICollection<TaskAssignment> Assignees { get; set; }
}

[Table("TaskAssignment")]
public class TaskAssignment : BaseEntity
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int TaskAssignmentId { get; set; }

    public int TaskId { get; set; }

    [ForeignKey("TaskId")]
    public TaskItem Task { get; set; }

    //...

}

我错过了什么?

由于您对主键使用身份策略,每个新的 TaskItem 都会有 TaskId = 0,因此您无法中继在此值上,因为当您保存多个关系时,EF 将无法解析关系。你可以做的是通过对象引用建立关系:

var newTask = new TaskItem {...} 
var newTaskAssignment = new TaskAssignment { Task = newTask }

如果您确实需要 TaskItem 的 PK,您需要先调用 SaveChange,然后才能使用它。