【发布时间】:2018-12-05 14:46:10
【问题描述】:
我突然出现了这种奇怪的行为(我在版本控制 (tfs) 中比较了我的文件,以确保我没有更改任何内容,也没有发现任何不同之处)。
我正在使用一些元数据为我的数据库播种,我发现它有一种我以前从未见过的非常奇怪的行为。我正在插入一个实体“产品”,它插入了这个实体 2 次strong>,第一个插入是正确的并且具有它应该具有的所有内容,另一个具有 NULL 属性(字符串值)但有些(如日期时间)有价值观。
我完全不知道为什么会这样,当我调用 base.Seed(ctx);方法,我敢肯定,因为我在此之后停止了 Webapp,然后才到达其他任何地方。
这个实体产品有相关的实体,所有其他数据都是在我的表中正确创建的。除了这个产品没有任何问题。
我尝试只播种 1 个产品实体,而不是添加其他产品实体,结果相同。 我监督了一些事情:还有其他实体正在播种,所以我去看看它发生在哪里,它是在发生的图片中添加 PurchasePrice 时:
我的产品实体:
public class Product : BaseEntity
{
public ICollection<Supplier> Suppliers { get; set; }
public ICollection<PurchasePrice> PurchasePrices { get; set; }
}
我的供应商实体:
public class Supplier : BaseEntity
{
public ICollection<PurchasePrice> PurchasePrices { get; set; }
public ICollection<Product> Products { get; set; }
}
我的 PurchasePrice 实体:
public class PurchasePrice:BaseEntity
{
public decimal Value { get; set; }
public Supplier Supplier { get; set; }
public Product Product { get; set; }
}
播种:
Supplier supplier1 = new Supplier("Microsoft", "Microsoft is the best supplier but its expensive", "btw nummer", "0800-123456", "microsoft@email.com", "contact person name");
ctx.Suppliers.Add(supplier1);
PurchasePrice purchaseprice = new PurchasePrice((decimal)17.70, supplier1);
ctx.PurchasePrices.Add(purchaseprice);
Product product1 = new Product("test product 1", supplier1, purchaseprice);
ctx.Products.Add(product1);
base.Seed(ctx);
不知道我应该看哪里,因为我的模型没有任何改变,我的播种方式也没有改变。我尝试使用 AddOrUpdate() 但没有奏效。
我在 MVC Web 应用程序中使用 EF6,使用代码优先方法(尚未)。 请问大家有什么建议吗?
【问题讨论】:
-
编辑了原帖
-
任何人都有建议,我是否忽略了导致此问题的关系?亲切的问候
-
你有没有调用这个Database.SetInitializer()。
-
我建议你做一个调试,仔细看表。这可能会向您显示负责复制的方法。这可能是由于继承而发生的,因此当您创建一个新对象时,会隐式调用一个方法。
标签: database entity-framework-6 ef-code-first seeding dbnull