現在、プロキシの作成を無効にしています。
context.Configuration.ProxyCreationEnabled = false;
私はそのようなデータモデルを持っています(関連のないフィールドを削除しました):
public partial class Video
{
public int VideoID { get; set; }
public string Title { get; set; }
public int UserID { get; set; }
public virtual User User { get; set; }
}
public partial class User
{
public User()
{
this.Videos = new HashSet<Video>();
}
public int UserID { get; set; }
public string Username { get; set; }
public virtual ICollection<Video> Videos { get; set; }
}
Unit of Work と Repository パターンを使用してデータをロードしています。
ユーザー オブジェクトを含むすべてのビデオを取得します。
var videos = videoService
.Include(v => v.User)
.Get()
automapper を使用して、データ モデルからドメイン モデルにマップしています (したがって、下のスクリーンショットの UI 名前空間)。戻ってきたビデオ列挙を調べて、列挙の最初の項目を確認すると、ユーザー オブジェクトを確認します。
ここで私が期待しているのは、VideoModel がデータで満たされ (ok)、単一の UserModel エンティティだけがデータで満たされ (ok)、UserModel 内のすべてのコレクションが空になることです (これは壊れています)。上の 2 番目の赤いボックスでわかるように、Videos コレクションには 6 つのビデオが取り込まれています。これらのビデオでは、ユーザーのビデオが埋められます。したがって、これは基本的に非常に大きなオブジェクト グラフを作成します。
1) インクルードを使用するときに、1 レベルの深さだけになるようにすることはできますか (IE は Video.User.Videos を埋めません)。
2) ProxyCreationEnabled = false がこれを処理しないのはなぜですか? 期待しすぎですか?
ps automapper を使用して、このための顧客マッパーを作成することは避けたいと思います。pps私は最初にモデルではなく、データベースを最初にやっています