我在这个 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,然后才能使用它。
我们在项目中使用代码优先。我有两个表,保存时收到此错误消息:
"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,然后才能使用它。