9
コードファーストを使用してSQL CE 4データベースを作成しようとしています。以下のサンプルコードを実行すると、データがまったく同じでも、Entity Frameworkは毎回製品の新しいレコードを挿入しています。 Entity Frameworkで関連製品が重複して作成されないようにするためには、何が必要ですか? ForeignID1とProductオブジェクトの値は、すでにデータベースに存在する値ですが、Entity Frameworkは与えたIDを消去して新しいIDを追加します。Entity Frameworkによって関連付けられたオブジェクトの新しいエントリまたは重複するエントリが作成される
namespace MyApp.Model
{
public class MyThing
{
public int ID { get; set; }
[ForeignKey("Product")]
public int ForeignID1{ get; set; }
public virtual Product Product { get; set; }
}
}
// Data.DataManager.cs
public class DataManager : DbContext
{
public DbSet<Model.MyThing> Things{ get; set; }
public DbSet<Model.Product> Products { get; set; }
}
これらは入力した値です。
context.Products.Attach(myThing.Product);
context.Things.Add(myThing);
または:だけあなたがコンテキストに関連するエンティティを添付する必要があり、重複を避けるために、複数のMyThings
の
これは方法で動作しました。しかし、今私は私の問題の一部はIDが1、2、3などに設定されているIDキーとして私のIDを使用していると考えている – teynon
私はこれと ' DatabaseGenerated(DatabaseGeneratedOption.None)] 'を使用してID列を無効にします。私はまた、各子供(製品)のための私自身の更新プロセスを実行しました。 – teynon
DBに追加したいオブジェクトのプロパティを編集する前にAttach()を使用することに注意することも重要です。たぶん私はちょうど馬鹿でした... –