前提・実現したいこと
LINQで取得するマスターのデータに詳細データを追加したい。
(下記のソースコードの)OwnersクラスのPetsプロパティーにJOINしたPetsテーブルのデータを付けて、LINQでSelectしたいと思っています。
※DBでのリレーションシップは考えておりません。
発生している問題・エラーメッセージ
マスターのデータだけ取得される。
該当のソースコード
C#
1 2class Owner 3{ 4 public string Id { get; set; } 5 public string FirstName { get; set; } 6 public string LastName { get; set; } 7 public IEnumerable<Pet> Pets{ get; set; } 8} 9 10class Pet 11{ 12 public string Id { get; set; } 13 public string OwnerId { get; set; } 14 public string Name { get; set; } 15} 16 17 18var entity = (from o in context.Owners 19 join p in context.Pets 20 on o.Id equals d.OwnerId into gj 21 from gjp in gj.DefaultIfEmpty() 22 select o).FirstOrDefault(); 23 24
試したこと
C#
1var entity = (from o in context.Owners 2 join p in context.Pets 3 on o.Id equals d.OwnerId into gj 4 from gjp in gj.DefaultIfEmpty() 5 select new Owner{o,Pets=gj}).FirstOrDefault();
みたいな感じが出来ればいいのですが。。。
ぐぐって、色々サンプルなどを見ると、select new がほとんどでした。
そして、匿名型上でプロパティーを作り、各項目を代入していました。
ここに載せているソースコードではOwnerのプロパティ(カラム)は少ないですが、
多い場合、全ての列を書くのはあほくさい、というか、バグの温床やメンテ地獄になるかと思いますので、今回の質問をさせていただきました。
補足情報(FW/ツールのバージョンなど)
Visual Studio 2019
EF Core 2.2
.NET Standard 2.0.3
回答3件
あなたの回答
tips
プレビュー