2

我有两个课程:

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();

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

我怎样才能改变这个?

4

2 回答 2

1

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

于 2012-05-11T13:39:39.287 回答
0

您确定您的 Module 对象的 Id 设置为一个值吗?如果它为零,那么 Entity Framework 会将其视为一个新关系。

于 2012-05-11T13:38:56.247 回答