假设我有以下POCO实体:
public class CellPhone {
public Manufacturer PhoneManufacturer;
public ICollection<Color> PhoneColor { get; set; }
public string Version { get; set; }
}
public class Manufacturer {
public int ID { get; set;}
public string Name { get; set; }
}
public class Color {
public int ID { get; set;}
public string Name { get; set; }
}
我的ObjectContext类中的每个实体都有一个ObjectSet。
创建新的CellPhone实例时,我通常拥有制造商和颜色的ID,因此为了将我的新CellPhone实例的引用添加到正确的制造商和颜色实体,我需要首先使用相同的上下文检索它们(查询其ObjectSet的ID),设置CellPhone实例的相关导航属性,然后保存新的CellPhone实例(将其添加到ObjectSet和SaveChanges())。
如果我有超过2个相关实体加入像CellPhone这样的类,这个过程就变得无效了。
有没有办法更有效地做到这一点?即,没有查询每个相关实体的数据库?
感谢您的帮助。
简
答案 0 :(得分:0)
您可以使用模型类保留外键属性。然后您不需要使用Find by Id。
public class CellPhone {
public Manufacturer PhoneManufacturer;
public int PhoneManufacturerId { get; set; }//foreignkey
public ICollection<Color> PhoneColor { get; set; }
public string Version { get; set; }
}
现在你可以这样做,
CellPhone cellpHone=new CellPhone {PhoneManufacturerId =2,Version= ""};
context.Attach(cellpHone);
context.SaveChanges();