我有两个班级:
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();
我传递给新部件定义的模块已经存在于数据库中。但是,当我保存新的部件定义而不是将当前模块添加为外键时,它会插入一个全新的模块。
我该如何更改?
答案 0 :(得分:1)
由于您没有任何[Key]属性来表示数据库中的主键;它每次都会添加一个新模块。尝试使用[Key]属性标记Id属性。 同时尝试在获取模块和插入部件时使用相同的上下文实例。
答案 1 :(得分:0)
您确定您的Module对象的Id设置为值吗?如果它为零,则实体框架会将其视为新关系。