首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聚合客户端和客户端类型

聚合客户端和客户端类型
EN

Code Review用户
提问于 2017-08-17 10:33:14
回答 1查看 84关注 0票数 1

我编写的代码实现了我想要的结果,但我不知道这是否是解决问题的正确方法。

我正在处理两个表(客户端,CLIENTTYPE),每个表在我的模型文件夹中都有一个自动生成的实体。由于我实际上不想将来自每个实体的所有数据发送回用户,所以我在一个ViewModels文件夹中为每个实体创建了一个视图模型。

客户端可以有多个CLIENTTYPE,所以我在我的ClientTypeViewModels中创建了一个List属性

代码语言:javascript
复制
    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();
    }
EN

回答 1

Code Review用户

回答已采纳

发布于 2017-08-17 13:41:43

您不应该需要使用自己的查询填充ClientTypes属性。通常,它是由一个已经知道如何处理相关表的导航属性处理的,但是要使其正常工作,首先需要正确设置外键。既然你没有贴出模型,我不能说在你的情况下是否有可能。

您可以阅读本文,解释它应该如何工作:不要使用Linq的连接.导航!

然后,您应该能够加载与Include的关系:

代码语言:javascript
复制
var x =
    from c in _context.Cases.Include("ClientTypes")
    where c.ClientID == code
    select c;

另见加载相关对象

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/173239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档