c# - 使用 ENTity Framework 查询填充 DTO 类 List<>

标签 c# entity-framework

是否可以从 EF 查询中填充列表?我的DTO如下:

public DTO()
{
  public string ClientName { get; set;}
  public List<string> RelatedCodes { get; set;}
}

我填充 DTO 的方法 =

Public DTO MyResult(string ClientCode)
{
   return (from o in repository.RelatedClient 
           where o.LeadCode == ClientCode 
           select new DTO { ClientName = o.ClientName, RelatedCodes = o.RelatedCodes.ToList()});
}

我知道我不应该在查询中添加 ToList() ,或者如果可以的话我做得非常错误。任何人都可以建议这是如何完成的。在这个示例中,我的 DTO 被削减了,但我希望在 DTO 中拥有大量单一属性和一个 List<>(或多个列表),并且如果可能的话,可以使用一个实体查询?

所以下面的答案我认为没有办法直接查询这个。我原来的选择是:

Public DTO MyResult(string ClientCode)
{
         var temp = (from o in repositry.RelatedCode Where o.LeadCode == ClientCode select o).ToList();

          DTO dto = (from o in repository.LeadClient Where o.LeadCode == ClientCode Select o.ClientName).Firstordefault();

         foreach(string rc in temp)
            {    dto.RelatedCode.Add(rc);}  
         return dto;

  }

我对此很满意,但如果有人能建议这是否是在没​​有像自动映射器这样的东西的情况下处理的正确方法,我将不胜感激。我正在尝试学习 Entity Framework ,并想检查我是否缺少一些内置功能。<​​/p>

最佳答案

类似于:

var dtoEntity = repo.RelatedClient.SingleOrDefault(x => x.LeadCode == ClodeCode);

DTO d = new DTO();
d.ClientName = dtoEntity.ClientName;
foreach (var relatedCode in dtoEntity.RelatedCodes)
{
    d.RelatedCodes.Add(relatedCode);
}

return d;

使用这种方法,您可以添加任意数量的属性。不过,我建议为此使用 AutoMapper。

在这里阅读更多内容:

http://nuget.org/packages/automapper

关于c# - 使用 ENTity Framework 查询填充 DTO 类 List<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12801488/

相关文章:

c# - 如何在不重定向到 facebook 的情况下获取用户访问 token 或授权码

entity-framework - Entity Framework 4 中的更新对象,需要一直先取吗?

c# - 如何让visual studio在做集成测试时运行一次TestInitialize?

entity-framework - EF Core 中的表值函数

c# - 在 C# 中使用 sql 中的日期和时间获取数据

c# - Entity Framework 迁移 NuGet 错误

c# - 使用 Entity Framework 将文件保存在数据库中

c# - 在 C# 中处理编码的 cookie 值

c# - 将 System.Xml.XmlElement 写入磁盘上的文件

c# - 'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地机器(服务器)上注册