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



我正在尝试创建一个新产品,并使用ado.net Entity Framework将其添加到我的数据库中。该产品具有卖方的外钥匙。我通过从数据库中检索合适的卖家来建立链接,然后进行p.Seller = seller;

但是,我一直遇到错误:

EntityKey属性只能在属性的当前值为null

时设置

执行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();
    }

如果为该实体加载P.Seller,您通常会遇到的错误,这是没有意义的,因为您正在创建新记录。简单的解决方法是:

p.SellerKey = seller.SellerKey;

我知道,既然您已经有了记录,那么只是要查询记录以获取钥匙,这是一种痛苦,但这对问题来说是一个很好的解决方法。另外,您可以尝试:

seller.Products.Add(p);

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

最新更新