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

本文关键字:导航 属性 实体 保存 获取 | 更新日期: 2023-09-27 17:54:02

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

_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为空,因为该顺序在数据库中不存在。如何在不保存订单的情况下利用导航属性?我想在保存之前做一些验证

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

可能您可以将新对象附加到上下文,然后使用context . orders。Local,带有Local属性。Local表示a表示所有已添加、未更改和已修改实体的本地视图。

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