实体框架为关联对象创建新的/重复的条目

tey*_*non 13 c# entity-framework

我正在尝试使用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; }
}
Run Code Online (Sandbox Code Playgroud)

这些是它输入的值.应该只有在表中的值由多个引用MyThings

在此输入图像描述

Sla*_*uma 10

为了避免重复,您必须将相关实体附加到上下文:

context.Products.Attach(myThing.Product);
context.Things.Add(myThing);
Run Code Online (Sandbox Code Playgroud)

要么...

myThing.Product = null;
context.Things.Add(myThing);
Run Code Online (Sandbox Code Playgroud)

...如果您已设置myThing.ForeignID1为现有产品ID ,也可以正常工作.