2011-06-27 9 views
1
var entity = _db.Connections.Where(x => x.Id == Id).FirstOrDefault(); 

Connectionsには別のList<Messages>があります。Entity Framework 4.1は、データベースからレコードを取得できません。

これは、複数回呼び出された場合、List<Messages>をデータベースから戻しません。コードをデバッグすると、Take(_count).ToArray()と呼ぶとデータが取得されますが、まだList<Messages>は取得されません。

私の簡単な質問は、Entity Frameworkを強制してデータベースからACTUALデータを取得する方法です。

おかげで、任意のヒントが

public interface Connection 
{ 
    public int Id { get; set; } 
    public virtual List<Messages> Messages { get; set; } 
} 
+0

わかりましたかわかりません:あなたのオブジェクト 'entity'はDBからロードされていますが、このオブジェクトのコレクションプロパティ' list'はヌルです、そうですか?そして、この問題は、2回目のクエリを実行して初めてクエリを実行した場合にのみ発生します。遅延読み込みを使用していますか?内部に 'list'プロパティを持つ' Connection'クラスを表示できるかどうかを理解する方が簡単かもしれません。 – Slauma

+0

私は自分の質問を編集しました – Stacker

+0

私は通常の1対多の関係をしています。問題は接続オブジェクトからのメッセージに対して2回目の質問です。メッセージはデータベースから取り出されません – Stacker

答えて

1

を高く評価しているあなたは、からそれを引き戻す際にEntity Frameworkのは、実際にそれを移植する前

public virtual ICollection<Messages> { get; set; }

にあなたのメッセージプロパティを変更する必要がありますデータベース。

+0

レコードの場合、仮想を追加しても、実際にデータベースから取り戻すときに仮想に追加されません。仮想キーワードは遅延ロードを実装するために必要です(これはEFではデフォルトでオンになっています)。プロパティを呼び出すまで、プロパティは移入されず、別のクエリが作成されます。 – OpticalDelusion

関連する問題