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上。
为什么?
谢谢,我要去给了论文提示了一枪。 –
这两个解决方案对我来说都很好,我会用第二个解决方案,因为适合我的项目。谢谢你。 –
但是,当对象属性仍然具有更多的对象属性时,最好将他从上下文中再次恢复,而不是将其标记为未更改。 –