Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何返回多个表的查询实体_C#_Wcf_Linq_Entity Framework - Fatal编程技术网

C# 如何返回多个表的查询实体

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属性在服

我有一个web服务,它使用实体框架进行存储,并为CRUD操作公开一个公共API

如果我有一个实体,比如User,它与一个Car实体有1对多的关系,那么我如何在GetUser(int userId)的web服务方法中轻松返回一个如下所示的User实例:

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
实体类型不同?