我的 Silverlight 应用程序使用 RIA Web 服务与使用 Entity Framework 模型的 DomainService
进行交互。
在服务中我有一些简单的东西,比如:
Public Function GetCompanyByID(companyID As Integer) As Company
Return ObjectContext.Companies.FirstOrDefault(Function(c) c.ID = companyID)
End Function
我的问题是所有的公司都是先从数据库加载,然后用LINQ查询并发送给客户端吗?
我问是因为数据库可能会增长,并且可能会在公司实体中引入一些导航属性的预加载。因此首先加载所有公司可能需要很长时间。
最佳答案
RIA ObjectContext 操作 IQueryable。您可以从方法域服务方法返回 IQueryable,以允许客户端“linq 到客户端模型实体”通过表达式树序列化转换为服务器端“linq 到实体/db”(默认情况下是惰性的)。您可以通过 turning off 'LazyLoadingEnabled' 启用预加载.
另见 Code-First in RIA (DbContext) - 这是您可以完全支持/控制您选择的 ORM 的方式。
关于.net - DomainService 是否在执行 linq 之前加载所有实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15337956/