我正在构建一个ASP.NET Web API v2项目,我正在使用Entity Framework v6来建模数据库。到目前为止,只有当集合是一种对象类型时,我才能返回对象集合。即<Customer>
或<Order>
。
我想返回一个对象集合,但是包含来自相关实体的字段(或属性)(存在关联)。我认为我正确地进行了LINQ to Entity查询设置,但我不确定如何将结果匿名类型返回到调用API的jQuery方法。
[Route("api/clients/GetAllClientsWithPaymentMethod")]
[HttpGet]
public NOT-SURE-WHAT-RETURN-TYPE-SHOULD-BE GetAllClientsWithPaymentMethod()
{
using (var context = new MyEntities())
{
context.Configuration.ProxyCreationEnabled = false;
var query = from client in context.Clients
select new
{
ClientID = client.ID,
CompanyName = client.CompanyName,
Phone = client.Phone,
Email = client.email
PaymentMethod = client.payments.PaymentMethod
};
return query.ToList();
}
}
匿名类型是返回此信息的正确方法吗?如果是这样,返回类型应该是什么?有一个更好的方法吗?
答案 0 :(得分:1)
我会创建一个名为Client的类,其中包含您想要返回的所有字段。
e.g。
public class Client
{
private int ID;
private string companyName;
private string phoneNumber;
private string email;
private string payMethod;
public Client()
{
}
//...etc
}
在控制器中,我将根据数据库查询的结果创建一组客户端对象,然后我将返回一个IEnumerable客户端,例如。
public IEnumerable<Client> GetAllClientsWithPaymentMethod()
在客户端,您可以使用正在使用的序列化程序读取消息的内容。
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("api/clients/GetAllClientsWithPaymentMethod");
IEnumerable<Client> returnedClients = response.Content.ReadAsAsync<Client>(new[] { JsonFormatter() }).Result;