实体框架 - 如何设置关联值?

时间:2009-09-15 04:08:33

标签: entity-framework

假设我有一个Person类和一个Order类,在DB中有外键。 EF模型将使用Person实例标记具有订单和订单列表的人。

如果我想为订单设置Person,我真的必须使用Person的实例吗?

没有一种简洁的方法可以这样做,比如说只有一个PersonID?

2 个答案:

答案 0 :(得分:3)

要在不加载Person实体的情况下将Person实体分配给Order,您必须执行以下操作:

var db = new OneToManyEntities();  
var Order  = new Order { OrderId = 100, OrderName = "Order name" };  
Order. PersonReference.EntityKey = new EntityKey("OneToManyEntities.Person ","PersonID",10);
db.AddToOrders(Order); 
db.SaveChanges();

答案 1 :(得分:2)

困惑的答案对于EF v1是正确的。这是一种痛苦。如果您不介意额外查询,可以简洁地设置属性:

int id = 1;
Order.Person = context.Persons.Where(x => x.PersonID == id).FirstOrDefault();

Entity Framework v4将具有“FK Associations”,这是可直接设置的外键的一个奇特术语。