2015-09-04 12 views
7

ジョインの代わりにナビゲーションプロパティを初めて使用しようとしています。私は、通常は左外部結合で行われる状況で作業することはできません。次の例では、外部キーがnull以外の場合にのみ結果を返します。私はすべての結果を戻す必要があります。私は何が欠けていますか?外部キーがNULLのEFナビゲーションプロパティ

public class User 
{ 
    [Key] 
    public int UserID {get;set;} 

    public String Name {get;set;} 
} 

public class Shipment 
{ 
    [Key] 
    public int ShipmentID {get;set;} 

    public int? SignedForByID {get;set;} 

    [ForeignKey("SignedForByID")] 
    public virtual User SignedForBy{get;set;} 
} 

ナビゲーションプロパティマッピング:

Shipment.HasOptional(x=> x.SignedForBy).WithMany() 
.HasForeignKey(y=> y.SignedForByID).WillCascadeOnDelete(false); 

クエリ:

var data = (from s in context.Set<Shipment>() 
      select new { 
        ShipmentID = s.ShipmentID, 
        SignedForBy = s.SignedForBy 
         }); 
+0

コンテキスト変数はDbContextですか?あなたが呼んでいる 'Shipments'メソッドの実装を表示できますか? – user2697817

+0

はい、そうです。私はこれを明確にするために投稿を編集する。それはちょうどDbSetのです – Sam

+0

私はそれを困惑している、私はそれがうまくいかない理由を参照してください。 – user2697817

答えて

1

問題は、この例では表示されませんでした。マッピングはヘルパークラスによって生成されます。場合によっては、ヘルパークラスが.HasOptional()メソッドの代わりに.HasRequired()メソッドを使用してナビゲーションプロパティを誤ってマップしたことがあります。マッピングクラスを修正することで問題が解決されました。

関連する問題