0

嗨我有一个MVC应用程序,我从中调用存储过程。我使用存储过程的原因是因为查询非常复杂,并且它已经存在,所以我不妨使用它。重新填充实体框架导航属性

它基本上回到了我:

IEnumerable<Activity> 

这是很好的。

有许多外键的属性像一个:

AreaId 

在这里面被填充。

但是在我的模型我有导航属性:

// Navigation properties 
     public virtual Area Area { get; set; } 

这当然是不填充通过存储过程得到它。

我想知道是否有一种简单的方法来获得这些导航属性填充。

我相信我听说过一些命令,你可以调用你的实体刷新导航属性。

+0

http://stackoverflow.com/questions/1035677/using-a-stored-procedure-in-entity-framework-how-do-i-get-the-the-entity-to-have –

回答

1

您可以使用此:

context.Entry(loadedEntity).Reference(l => l.Area).Load(); 

,但如果你把它的每一个实体在您的枚举,因为它会为你想要加载每Area做单独的查询和数据库往返它不会有很好的表现。这是使用存储过程的缺点 - 一旦你这样做,你应该有另一个存储过程来加载所有需要的区域。