问题描述
- Entity Framework使用Code First 插入数据时,多出来额外的数据
-
在项目总使用Code First遇到坑爹的问题了
例如我有如下类:
public class Catalog
{
public Int32 ID { get; set; }
public String CatalogName { get; set; }
public Catalog() { }
public Catalog(Int32 ID, String Name)
{
this.ID = ID;
this.CatalogName = Name;
}
}然后有另一个类引用该类:
public class CatalogClassify
{
public Int32 ID { get; set; }
public Catalog catalog { get; set; }
public String Name { get; set; }
public CatalogClassify(){ }
public CatalogClassify(Int32 ID, Catalog catalog, String Name){
this.ID = ID;
this.catalog = catalog;
this.Name = Name;
}
}这两个类都映射到数据库中并存储起来。
假如我已有一个Catalog对象映射到数据库其数据库中相应的数据为:{1,"MyName"};
而我现在要一个CatalogClassify对象也插入到数据中其代码为:
Catalog catalog = new Catalog(1,"MyName")
CatalogClassify myCatalog = new CatalogClassify(1,catalog,"TestName");
然后在将myCatalog对象插入到数据库中,这时会发现在Catalog对象对应的表中有两行数据,分别为{1,"MyName"},{2,"MyName"}.
但是这不是我想要的结果,我只是想让myCatalog对象引用一个已有的Catalog对象,而不是在数据库中创建任何新的数据了。
求大神提供解决方案啊
解决方案
这里就不要新建
Catalog catalog = new Catalog(1,"MyName")
而是从数据库把id=1的找出来