我错过了这个实体框架关系的东西

时间:2015-12-31 16:55:43

标签: entity-framework ef-code-first

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

  

"无法确定" 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; }

    //...

}

我错过了什么?

1 个答案:

答案 0 :(得分:1)

当您对主键使用Identity策略时,每个新的 TaskItem 将具有 TaskId = 0 ,因此您无法对此值进行中继,因为EF将当您保存多个关系时,无法解决关系。你可以做的是通过对象引用建立关系:

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

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