2017-11-24 10 views
0

私のデータベースには、Profileがnullの2つの関係を持つユーザークラスがあります。Includeが追加されたときに比較が機能しない

私はX記号属性を持つユーザーを検索しようとしています。だから私はこれをやっている:

var users = Context.Users.Where(u => String.Compare(u.Sign, X) == 0).ToList(); 

これまでのところ動作します。しかし、私はこの検索にProfileとPersonを含める必要があり、Include()メソッドを使用すると、Profile nullを持つユーザーに対して、nullがある人は含まれません。

var users = Context.Users.Include("Profile").Include("Person").Where(u => String.Compare(u.Sign, X) == 0).ToList(); //stopedworking (users do not include who has Profile null) 

どうすればこの作品を作成できますか?

仮想IDとID参照を追加しました。忘れてしまいました。

+0

すべての文法で問題はないようです。 'User'クラスを見て、' Profile'と 'Person'''virtual'を何かするのですか? –

+4

「クラッシュする」と「動作を停止しました」という意味は何ですか?皆さん、私たちにあなたのエラーを修正してもらうために、スタックトレースと他のすべてを含むエラーを提供できますか? –

+0

@AdamHouldsworth私はここにそれを置くのを忘れましたが、はいそれはそれを持っています。 TimSchmelterスタックトレースはありません。クエリが変更されただけです。 – Dener

答えて

1

はあなたがところでQueryable.Include<T, TProperty>代わりのInclude(string)

string X = ... 
var result = dbContext.Users 
    .Include(user => user.Profile) 
    .Where(user => user.Sign == X); 

を使用することができますsystem.data.entityを含め、あなたのクエリが完了し、ユーザーとIF処理能力の無駄である完全なプロファイルを選択し、いくつかのプロパティのみを使用することを計画しています。その場合は、selectを使用することをお勧めします。

var result = dbContext.Users 
    .Where(user => user.Sign == X) 
    .Select(user => new 
    { // select only the properties you'll use after the query 
     ... 

     // from the Profile, select only the properties you'll use after the query 
     Profiles = user.Profile.Select(profile => new 
     { 
      ... 
     } 
    }); 
関連する問題