实体在我希望它附加时插入

时间:2012-05-11 13:34:40

标签: c# entity-framework ef-code-first poco

我有两个班级:

public class PartDefinition
{
    public int Id { get; set; }

    [Required]
    [MaxLength(10)]
    public string PartNumber { get; set; }

    [Required]
    public virtual Module Module { get; set; }
}

public class Module
{
    public int Id { get; set; }

    [Required]
    [MaxLength(10)]
    public string Name { get; set; }
}

然后我尝试执行此操作:

PartDefinition part = new PartDefinition(partNumber, module);
context.PartDefinitions.Add(part);
context.SaveChanges();

我传递给新部件定义的模块已经存在于数据库中。但是,当我保存新的部件定义而不是将当前模块添加为外键时,它会插入一个全新的模块。

我该如何更改?

2 个答案:

答案 0 :(得分:1)

由于您没有任何[Key]属性来表示数据库中的主键;它每次都会添加一个新模块。尝试使用[Key]属性标记Id属性。 同时尝试在获取模块和插入部件时使用相同的上下文实例。

答案 1 :(得分:0)

您确定您的Module对象的Id设置为值吗?如果它为零,则实体框架会将其视为新关系。