_context.Homestays
.Include(x => x.CreatedUser)
.Include(x => x.UpdatedUser)
.Include(x => x.HomestayEvaluations)
.Include(x => x.HomestayContracts)
.Include(x => x.HomestayPoliceChecks)
.Include(x => x.HomestayHouseHolds)
.AsNoTracking()
.Select(x => new Homestay()
{
HomestayId = x.HomestayId,
HomestayFamily = ConstValue.GetHomestayFamilyName(x),
Address = x.Address,
Score = x.HomestayEvaluations.Any(x1 => x1.IsEvaluationActive) ? x.HomestayEvaluations.LastOrDefault(x1 => x1.IsEvaluationActive).GetScore() : 0,
Contract = x.HomestayContracts.Any(x1 => x1.IsContractActive) ? x.HomestayContracts.LastOrDefault(x1 => x1.IsContractActive).ContractDate : null,
Students = x.Students,
HouseHolders = x.HomestayHouseHolds.Count(x1 => x1.IsHouseHoldActive),
PoliceCheck = x.HomestayPoliceChecks.Any(x1 => x1.IsPoliceCheckActive) ? x.HomestayPoliceChecks.LastOrDefault(x1 => x1.IsPoliceCheckActive).PoliceCheckDate : null,
Language = x.Language,
Room = x.Room,
IsActive = x.IsActive,
CreatedDate = x.CreatedDate,
CreatedUserName = ConstValue.GetUserName(x.CreatedUser),
UpdatedDate = x.UpdatedDate,
UpdatedUserName = ConstValue.GetUserName(x.UpdatedUser)
})
.OrderByDescending(x => x.HomestayId);
こんにちは、私の選択クエリをより良く変更するにはどうすればよいですか?EFコアのパフォーマンスの問題を選択
このコードは以下のように乱雑に見えます。 最初に実行し、それが真であれば、最後のものを取得します。それ以上の短いコードはありますか?
契約= x.HomestayContracts.Any(x1 => x1.IsContractActive)? x.HomestayContracts.LastOrDefault(x1 => x1.IsContractActive).ContractDate:null
私はany()なしで試してみましたが、データがない場合はnullオブジェクトとしてエラーが発生しました。
私を助けてください。
感謝:)
ストアドプロシージャを作成し、ストアドプロシージャ – JaredStroeb
[DefaultIfEmpty()]を見てみましょう(http://geekswithblogs.net/BlackRabbitCoder/archive/2011/06/02/c.net-little-wonders-を実行しますあなたがそれらを参照するので、すべての.Include()をダンプすることもできます(つまり、空のdefaultifemptyとcount.aspx) 'Contract = x.HomestayContracts.Where(x1 => x1.IsContractActive).DefaultIfEmpty()。LastOrDefault();'あなたの質問に。 –
"デバッグ"ロギングを有効にし、コンソールからSQL Management Studio(または任意の他のツール)にSQLをコピーし、このSQLとそのクエリプランを調べます。 – Dmitry