我们首先在项目中使用代码。我有两个表,保存时我收到此错误消息:
"无法确定" PublicationSystem.Model.TaskAssignment_Task'的主要结尾。关系。多个添加的实体可能具有相同的主键。"
以下是模型:
[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; }
//...
}
我错过了什么?
答案 0 :(得分:1)
当您对主键使用Identity策略时,每个新的 TaskItem 将具有 TaskId = 0 ,因此您无法对此值进行中继,因为EF将当您保存多个关系时,无法解决关系。你可以做的是通过对象引用建立关系:
var newTask = new TaskItem {...}
var newTaskAssignment = new TaskAssignment { Task = newTask }
如果您确实需要 TaskItem 的PK,则需要先使用 SaveChange ,然后才能使用它。