0

新しい製品を作成し、ADO.NETEntityFrameworkを使用してデータベースに追加しようとしています。製品には、売り手への外部キーがあります。私はデータベースから適切な売り手を取得することによってリンクを作成し、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 に答える