0

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

1 回答 1

3

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

p.SellerKey = seller.SellerKey;

我知道,既然您已经有了记录,那么仅仅查询记录以获取密钥是很痛苦的,但这将是解决问题的好方法。另外,您可以尝试这样做:

seller.Products.Add(p);

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

于 2012-12-21T01:21:43.437 回答