検索方法がわからない基本的なEFの質問:
生成されたデータ モデルで Entity Framework を使用して、ルックアップ データをメイン エンティティに本質的に組み込む複合/カスタム エンティティを作成する方法急いで)?
では、この例では、"BuinessUnit1" 値を含むサイトのライトを持つ "SiteBU" エンティティを作成できますか?
派生/継承されたカスタム "SiteBU" エンティティ (次の図を参照) を作成できることは認識していますが、それに "BusinessUnit1" 値を追加する方法がわかりません。
カスタム LINQ エンティティを使用できることも認識していますが、キャッシュの目的で、生成された/匿名の型ではなく、独自の「実際の」エンティティが必要です。
using (var context = new ReportingEntities())
{
result = new Collection<Site>(context.Sites
.Include("BusinessUnit") // Pointless because it's cast back to a Site?!
.Where(s => !s.IsDeleted)
.OrderBy(s => s.Site1).ThenBy(s => s.BusinessUnit.BusinessUnit1)
.ToList());
}
これは、複合エンティティを構築するために私が見ることができる唯一の手動 (コードベース) の方法です (ここでは、「Site」から継承し、コンストラクターに追加の BusinessUnit プロパティを持つ「SiteBUEntity」を手動で作成しました)。とても面倒そうですが。
using (var context = new ReportingEntities())
{
var siteBU = from s in context.Sites.Include("BusinessUnit")
where !s.IsDeleted
orderby s.Site1, s.BusinessUnit.BusinessUnit1
select new { Site = s, s.BusinessUnit.BusinessUnit1 };
result = new Collection<SiteBUEntity>(siteBU.ToList().Select(s => new SiteBUEntity(s.Site, s.BusinessUnit1)).ToList());
}
(用語が間違っていたらすみません - 訂正してください)。