获取尚未保存的实体的导航属性值

时间:2015-06-05 16:47:00

标签: c# entity-framework navigation-properties

假设我有一个客户和订单表:

_Customers_    _Orders_
IdCustomer     OrderNumber
Name           IdCustomer
Etc            Etc

当我使用实体框架时,它非常好用于创建导航属性,这意味着我可以这样做:

var context = new MyEntities(); 
var c = context.Orders.First().Customer;

这很好,因为数据库上存在第一个订单。如何利用导航属性以避免为数据库中不存在的记录创建连接。 换句话说

var myNewOrder = new Order(){ IdCustomer =2, OrderNumber=3123, etc...}
var context = new MyEntities(); 
var c = context.Orders.Attach(context).Customer;

在这种情况下,c为null,因为该顺序在数据库中不存在。如何在不保存订单的情况下利用导航属性?我想在保存之前做一些验证。

1 个答案:

答案 0 :(得分:0)

可能是您可以将新对象附加到上下文,然后使用Context.Orders.Local和Local属性。 Local表示a表示所有Added,Unchanged和Modified实体的本地视图。

var myNewOrder = new Order(){ IdCustomer =2, OrderNumber=3123, etc...}
var context = new MyEntities(); 
var c = context.Orders.Attach(myNewOrder);

var attatchedOrder = context.Orders.Local.SingleOrFirst(o => o.IdCustomer);

有关https://msdn.microsoft.com/en-us/library/gg696248%28v=vs.113%29.aspx

上的本地的详情