【发布时间】:2016-12-19 11:02:30
【问题描述】:
我的实体是:
public class Customer
{
...
public virtual ICollection<ShoppingCartItem> ShoppingCartItems { get; set; }
...
}
public class ShoppingCartItem
{
public string CustomerId { get; set; }
public int ProductId { get; set; }
public virtual Customer { get; set; }
public virtual Product{ get; set; }
...
}
添加方法是:
public async Task AddAsync(TEntity entity)
{
await Task.Factory.StartNew(() => this.entities.Add(entity));
}
我要添加的实体是:
ShoppingCartItem()
{
CustomerId = "xxxxx",
ProductId = 1,
Customer = null,
Product = null
}
当我调用 SaveChanges() 时,EF 试图为 ShoppingCartItem 插入两条相同的记录。 ShoppingCartItem 仅被创建一次并添加到上下文中。有什么想法可能是错的吗?
编辑:
这就是我调用 AddSync 方法的方式:
public async Task AddNewCartItem(ShoppingCartItem shopingCartItem)
{
await this.ShoppingCartItemRepository.AddAsync(shopingCartItem);
await this.SmartStoreWorkData.CompleteAsync();
}
【问题讨论】:
-
EF 只能在您拥有唯一主键的情况下进行更新。否则它无法知道什么是重复的。
-
我们能看看你是怎么调用 Addasync 方法的吗?
-
为什么add方法是异步的?这根本没有意义。
-
@SamAxe
ShoppingCartItem有主键。 @DavidG EF 尝试添加两条记录的任何一种方式。 -
你怎么称呼那个 AddNewCartItem?
标签: c# entity-framework entity-framework-core