私はlocalDBをC#で使用していますが、いくつかのクラス(コンテキストクラス)は別のクラスの属性を持っていますが、そのオブジェクトを永続化すると属性クラス(class_id)の参照を保存しません。 (bothsを永続)C#なぜオブジェクトレコードが重複しているのですか?
public class Item
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public String Name { get; set; }
}
public class Order
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public Item Item { get; set; }
}
どちらのクラスが同じルーチンが持続する基本的な行う余分なコントロールクラスを持っている:
public void SaveObjeto(ObjectClass object)
{
if (object.Id == 0)
{
ctx.Objects.Add(objeto);
}
else
{
var temp = ctx.Objects.SingleOrDefault(
temp => temp.Id == objeto.Id
);
temp.Id = objeto.Id;
temp.Attribute = objeto.Attribute;
}
ctx.SaveChanges();
}
私は存続するためにLINQの式を使用します。
実用的な例:私はクラスアイテム1がうまくLocalDBに存続している
- 。
- 次に、属性Item1を持つOrder1を永続化しようとします。
- 永続的なOrder1は、永続化されたItem1を参照するのではなく、Item1(クローン?)として別のレコードを作成します。
- 結局のところ、私は2つのItem1がLocalDB上に残っていることに固執しています。
なぜですか?
おかげで、私は論文のヒントのために打撃を与えるつもり。 –
両方のソリューションは私のためにうまくいきました。私は2番目のソリューションを使用します。ありがとう。 –
しかし、オブジェクト属性にまだオブジェクト属性がある場合は、彼に変更のないマークを付けるのではなく、コンテキストから彼を回復させる方がよいでしょう。 –