C# 如何返回多个表的查询实体
我有一个web服务,它使用实体框架进行存储,并为CRUD操作公开一个公共API 如果我有一个实体,比如User,它与一个Car实体有1对多的关系,那么我如何在GetUser(int userId)的web服务方法中轻松返回一个如下所示的User实例:C# 如何返回多个表的查询实体,c#,wcf,linq,entity-framework,C#,Wcf,Linq,Entity Framework,我有一个web服务,它使用实体框架进行存储,并为CRUD操作公开一个公共API 如果我有一个实体,比如User,它与一个Car实体有1对多的关系,那么我如何在GetUser(int userId)的web服务方法中轻松返回一个如下所示的User实例: public class User{ string Id; IEnumberable<Car> Cars; } 公共类用户{ 字符串Id; 可编号的汽车; } 默认情况下,这是否在实体框架中起作用,因为我假设Cars属性在服
public class User{
string Id;
IEnumberable<Car> Cars;
}
公共类用户{
字符串Id;
可编号的汽车;
}
默认情况下,这是否在实体框架中起作用,因为我假设Cars属性在服务器端使用时是惰性的。我使用LINQ To SQL实现了类似的结果,对我来说它“刚刚起作用”。我会尝试一下,看看会发生什么。您可能需要在项目上明确定义
[DataContract]
。实体对象是可序列化的,您将自动获得Cars属性
但是,根据LINQ查询,Cars属性可能已加载,也可能未加载。如果总是希望在给定的web方法中加载Cars属性,那么应该显式加载该属性。下面是一些方法,以确保您加载汽车属性
1) 在LINQ查询中使用Include(“Cars”)方法
2) 使用投影
3) 在用户对象的实例上显式加载Cars属性。比如说,
userA.Cars.Load()
首先,您应该在
用户
实体的元数据定义中[包括]
汽车。另外,您可能需要重写getUsers()
方法来填充汽车。像这样的
public IQueryable<User> GetUsers()
{
return this.ObjectContext.User.Include("Cars");
}
public IQueryable GetUsers()
{
返回此.ObjectContext.User.Include(“Cars”);
}
这不容易很快解释,我建议你访问,和网站
希望有帮助 上面的
User
类是否与实际的User
实体类型不同?