我编写的代码实现了我想要的结果,但我不知道这是否是解决问题的正确方法。
我正在处理两个表(客户端,CLIENTTYPE),每个表在我的模型文件夹中都有一个自动生成的实体。由于我实际上不想将来自每个实体的所有数据发送回用户,所以我在一个ViewModels文件夹中为每个实体创建了一个视图模型。
客户端可以有多个CLIENTTYPE,所以我在我的ClientTypeViewModels中创建了一个List属性
public ClientsWithTypesViewModel getClientAndTypesByCode(string code)
{
var x =
from c in _context.Cases
where c.ClientID == code
select new ClientsWithTypesViewModel
{
ClientID = c.ClientID,
Title = c.Title,
Name = c.FullName,
ClientTypes = (from w in _context.ClientTypes where w.ClientType == c.ClientType select new ClientTypeViewModel { ClientType = w.ClientType, Description = w.Description }).ToList()
};
return x.FirstOrDefault();
}发布于 2017-08-17 13:41:43
您不应该需要使用自己的查询填充ClientTypes属性。通常,它是由一个已经知道如何处理相关表的导航属性处理的,但是要使其正常工作,首先需要正确设置外键。既然你没有贴出模型,我不能说在你的情况下是否有可能。
您可以阅读本文,解释它应该如何工作:不要使用Linq的连接.导航!
然后,您应该能够加载与Include的关系:
var x =
from c in _context.Cases.Include("ClientTypes")
where c.ClientID == code
select c;另见加载相关对象
https://codereview.stackexchange.com/questions/173239
复制相似问题