EF4:使用SP加载导航属性

时间:2012-03-26 00:31:35

标签: stored-procedures entity-framework-4 relationship

我只能使用SP从数据库加载我的实体。我可以使用导入功能成功加载客户:

Customer cust = context.GetCustomerById(customerId);

然后我需要使用另一个SP加载cust.Orders集合:

IEnumerable<Order> cust_orders = context.GetOrdersByCustomerId(customerId);

我获得了相关订单的列表,这些订单的属性Customer正确设置为已加载的Customer实例。当我尝试做类似的事情时会出现问题:

foreach(Order ord in cust.Orders)
{
  Console.WriteLine(ord.Number); // "SELECT permission required ..." exception is thrown here
}

有没有办法加载订单属性而不触发选择?

1 个答案:

答案 0 :(得分:0)

您必须通过适当的SP调用禁用LazyLoading并加载订单,如下所示:

DBContext.DataBase.SqlQuery<Order>("exec spGetOrders {0}", invoiceID).ToList();