EF复制现有实体而不是链接

时间:2015-05-26 14:04:47

标签: c# entity-framework

我相信我的EF codefirst设置中存在一些错误。 所以我有两个想法:

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

    public string Name { get; set; }

    public virtual ProductList ProductList { get; set; }

}

public class ProductList
{
    public ProductList()
    {
        this.Products = new List<Product>();
    }

    public int Id { get; set; }

    public string Title { get; set; }

    public virtual ICollection<Product> Products { get; set; }
}

和上下文

public class ApplicationDbContext :
{
    public DbSet<ProductList> ProductLists { get; set; }
    public DbSet<Product> Products { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<ProductList>().HasMany(p => p.Products).WithRequired(p => p.ProductList).WillCascadeOnDelete(true);
    }
}

我假设我的数据库中有产品清单。 当我创建产品时,我想做这样的事情:

var productListId = 1;
var product = new Product
    {
        Name = "New product",
        ProductList = db.ProductLists.Find(productListId)
    };

db.Products.Add(product);
db.SaveChanges();

我期待在表格中插入新行

Id  Name            ProductList_Id
1   New Product     1

但是,EF会创建新的ProductList,其值与我尝试链接的值相同,保存并将我的产品链接到这个新的ProductList。

1 个答案:

答案 0 :(得分:0)

要获得所需的行为,您的Product实体应包含ProductListID作为链接到ProductList实体的一对多外键。