1

エンティティ フレームワークを使用して 2 つのアプリケーションを構築し、遅延読み込みを使用して関連するエンティティを取得しようとしています。そのうちの 1 つは、関連するエンティティの遅延読み込みが期待どおりに機能しますが、もう 1 つは問題が発生します。関連するエンティティを読み込むことはできますが、コレクションが取得されると、エンティティは 1 つしか取得できません。

私が使用した:

base.ContextOptions.LazyLoadingEnabled = true;

私のデータコンテキストで。また、関連するコレクションを仮想化しました。

public virtual ICollection<Product> Products { get; set; }

2 つのアプリケーションの違いを探すのに 1 日以上費やしましたが、何も見つかりません。1 つのアプリケーションには、イベントを含む場所があり、正常に動作します。もう1つは製品を含むカテゴリがあり、それは機能していません。誰かが同様の問題に遭遇しましたか?! 私は何を見落としていますか。

問題は、ビューで製品を繰り返し処理しているときに、コレクション内の要素が 1 つしか表示されないことです。

@foreach(var Product in Model.Products) { @Product.Name }

しかし、複数あるはずの製品名が 1 つしか表示されません。

4

1 に答える 1

0

最近、同様の問題に遭遇しました。私たちの問題は、テーブルに複数の列キーがありましたが、列の 1 つが null 可能であったため、エンティティ キーとして使用できなかったことです。

EF の観点からは、ロードしようとしていたエンティティはすべて同じキーを持っていたため、最初のエンティティのみがロードされました。

この問題を解決するには、このテーブルに一意の ID 列を作成する必要がありました。

于 2015-08-28T14:52:19.730 に答える