我正在尝试使用Code First来创建SQL CE 4数据库。运行下面的示例代码时,Entity Framework每次都会为产品插入新记录,即使数据完全相同。 我需要做什么才能使Entity Framework不创建重复的关联产品? ForeignID1和Product对象中的值是数据库中已存在的值,但实体框架正在擦除我给出的ID它并添加一个新的ID。
namespace MyApp.Model
{
public class MyThing
{
public int ID { get; set; }
[ForeignKey("Product")]
public int ForeignID1{ get; set; }
public virtual Product Product { get; set; }
}
}
// Data.DataManager.cs
public class DataManager : DbContext
{
public DbSet<Model.MyThing> Things{ get; set; }
public DbSet<Model.Product> Products { get; set; }
}
这些是它输入的值。表中应该只有一个值由多个MyThings
的
答案 0 :(得分:9)
为了避免重复,您必须将相关实体附加到上下文:
context.Products.Attach(myThing.Product);
context.Things.Add(myThing);
或者...
myThing.Product = null;
context.Things.Add(myThing);
如果您已将myThing.ForeignID1
设置为现有产品ID,...也会有效。