2

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が削減されていますが、可能であれば1つのエンティティクエリを使用して、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を学習しようとしていますが、組み込みの機能が不足していないことを確認したいと思います。

4

1 に答える 1

3

何かのようなもの:

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

于 2012-10-09T13:50:12.360 に答える