只有当属性的当前值为null时,才能设置EntityKey属性

时间:2012-12-21 00:10:49

标签: c# asp.net-mvc

我正在尝试创建一个新产品,并使用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();
    }

1 个答案:

答案 0 :(得分:3)

如果为该实体加载了p.Seller,那么该错误就是您通常会得到的错误,因为您创建了一条新记录,所以这是没有意义的。简单的解决方法是:

p.SellerKey = seller.SellerKey;

我知道,因为你已经有了记录,查询记录获取密钥是一件痛苦的事,但这对问题来说是一个很好的解决方法。此外,您可以尝试:

seller.Products.Add(p);

查看添加反向关系是否有效。