私は "SP"という名前のオブジェクトを持っており、dbに格納されているすべてのプロバイダの在庫製品のリストを参照しています。複数のオブジェクトがそれを参照しているエンティティの状態を変更するにはどうすればよいですか?
私のアクションでは、私は現在のプロバイダのIDに基づいてのSPをフィルタリング「のPSP」という名前の新しいオブジェクトを作成する必要があります。
Public ActionResult Edit(int id, int pid)
{
var SPs = dbContext.Products.Where(o => o.ID == id).Select(o => o.SPs).ToList();
// do something based on SPs
...
var PSPs = Filter(SPs, pid);
// edit all PSPs
を私はこのようなPSPのことで呼ばエンティティの状態を変更しようとしました:
PSPs.ForEach(o => {
dbContext.Entry(o).State = EntityState.Modified;
}
}
が、このようなメッセージで例外を受け取っ:
同じタイプの別のエンティティがすでに同じプライマリキー値を持っているため、タイプ 'SP'のエンティティをアタッチできませんでした。多くのための
、ここでのSPのナビゲーションプロパティは、Productクラスである:
public ICollection<SP> SPs { get; set; }
とSPクラス:だから
public class StockProduct
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SPID { get; set; }
[ForeignKey("Product")]
public int ProductID { get; set; }
public Product Product { get; set; }
[ForeignKey("Provider")]
public int ProviderID { get; set; }
public Provider Provider { get; set; }
...
}
、任意のアイデア?
あなたのテーブルには、あなたのStateフィールドに固有の制約があると思います。 –
Productクラスのplを表示できますか? – GGO
@GGO:私たちが見なければならない 'SP'クラスではありませんか? – Flater