0
我在C#上使用localDB,某些類(上下文類)具有屬於另一個類的屬性,但是當我堅持該對象時,他不僅保存屬性類(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表達式來進行持續。
實施例之實踐:
- 我已經類的Item1阱上的LocalDB堅持;
- 然後,我嘗試堅持具有屬性Item1的類Order1
- 當堅持Order1時,他們在LocalDB上創建另一條記錄作爲Item1(clone?),而不是僅引用已持久化的Item1;
- 最後,我用兩個Item1持久保存在LocalDB上。
爲什麼?
謝謝,我要去給了論文提示了一槍。 –
這兩個解決方案對我來說都很好,我會用第二個解決方案,因爲適合我的項目。謝謝你。 –
但是,當對象屬性仍然具有更多的對象屬性時,最好將他從上下文中再次恢復,而不是將其標記爲未更改。 –