我正在尝试创建一个新产品,并使用ADO.NET Entity Framework将其添加到我的数据库中。该产品具有卖方的外键。我通过从数据库中检索正确的卖方来建立链接,然后执行p.Seller = seller;
但是,我一直收到错误:
EntityKey属性只能在属性的当前值为空时设置
当我执行db.AddToProduct(p);
行时。 stackoverflow上有类似帖子有这个问题,但解决方案不起作用。
using (CastleDatabaseEntities db = new CastleDatabaseEntities())
{
SellerRepository sp = new SellerRepository();
Seller seller = sp.GetSeller(username);
Product p = new Product() { Name = name,
Amount = amount,
AmountSold = 0,
Price = price,
MaxSale = maxSales,
Description = description,
Image = "",
Suspended = false};
p.Seller = seller;
db.AddToProduct(p);
db.SaveChanges();
}
答案 0 :(得分:3)
如果为该实体加载了p.Seller,那么该错误就是您通常会得到的错误,因为您创建了一条新记录,所以这是没有意义的。简单的解决方法是:
p.SellerKey = seller.SellerKey;
我知道,因为你已经有了记录,查询记录获取密钥是一件痛苦的事,但这对问题来说是一个很好的解决方法。此外,您可以尝试:
seller.Products.Add(p);
查看添加反向关系是否有效。