0
私はこの射影を実行すると、カウントは私のデータベースの人々の量に等しい:のNullチェック[EF 7 RC1]
int peopleProjectionCount = _db.People.Count();
は、しかし、私はこの射影を実行して、カウントを取得するとき、私が得るのは、TitleTypeとSuffixTypeがnullでないレコードのみのカウントです。
int peopleProjectionCount = _db.People
.Select(p =>
new PersonViewModel()
{
AgeInMonths = p.AgeInMonths,
Title = p.TitleType == null ? null : p.TitleType.Title,
FirstName = p.FirstName,
NickName = p.NickName,
MiddleName = p.MiddleName,
LastName = p.LastName,
Suffix = p.SuffixType == null ? null : p.SuffixType.Suffix,
DateOfBirth = p.DateOfBirth,
DateOfDeath = p.DateOfDeath
}).Count();
このプロジェクションでは、この質問の目的でここにCountが返されます。私が本当にやりたいことは、PersonViewModelのリストを返すことです。人がタイトルやサフィックスを持っていない場合でも、そのレコードを含めることができます。私は、ビューモデルのそのプロパティをnullにするだけです。ここでは、それらのレコードが単純に無視されるように見えます。
これは正常な動作ですか?もしそうなら、どうすれば、チェックされたプロパティがnullのレコードを無視して、EFなしでこのような投影でヌルチェックを使うことができますか?
'null'チェックをすべて削除するとどうなりますか?Title = p.TitleType.Title'? – juharr
このコード行をデータコンテキストコンストラクタに追加し、出力ウィンドウで実行されたクエリを確認します - this.Database.Log = s => System.Diagnostics.Debug.WriteLine(s); – Stilgar
@juharrもし 'Title = p.TitleType.Title'とSuffixと同じことをしても、私は同じ結果を得ます。あたかもEFが私のためにヌルチェックをして、チェックに失敗したレコードを無視するかのようです。私の考えは、NullReferenceExceptionで失敗するだろう。 – paz