我有一个使用Entity Framework进行存储的Web服务,并为CRUD操作公开了一个公共API。
如果我有一个像User这样与Car实体有1对多关系的实体,我如何轻松地在GetUser(int userId)的web服务方法中返回一个如下所示的用户实例:
public class User{
string Id;
IEnumberable<Car> Cars;
}
这是否在实体框架中默认工作,因为我假设在服务器端使用它时Cars属性是惰性的。
答案 0 :(得分:2)
实体对象是可序列化的,您将自动获取Cars属性。
但是,根据您的LINQ查询,可能已加载或未加载Cars属性。如果您总是希望在给定的Web方法中加载Cars属性,那么您应该显式加载该属性。以下几种方法可以保证您加载Cars属性。
1)在LINQ查询中使用Include(“Cars”)方法。
2)使用投影。
3)在User对象的实例上显式加载Cars属性。例如,
userA.Cars.Load()
答案 1 :(得分:2)
首先,您应该[Include]
汽车在User
实体的元数据定义。此外,您可能需要重写getUsers()
方法来填充汽车。这样的事情。
public IQueryable<User> GetUsers()
{
return this.ObjectContext.User.Include("Cars");
}
希望有所帮助!
答案 2 :(得分:0)
我已经使用LINQ-To-SQL来实现类似的结果,对我来说它“只是起作用”。我试试看看会发生什么。您可能需要在项目上明确定义[DataContract]
。