EFおよびPOCOの最初のセットアップでは、IRepositoryパターンが非常にうまく機能しています。しかし、「コレクションが変更されたため、列挙操作が実行されない可能性があります」という奇妙な問題が発生しています。POCO Entity Framework 4 IRepositoryパターンコレクションを使用すると、削除時にエラーが発生する
次のように基本的に我々はobjectSetとでリポジトリを持っています。
protected IObjectSet<T> ObjectSet
{
get
{
if (_objectSet == null)
{
_objectSet = this.Context.CreateObjectSet<T>();
}
return _objectSet;
}
}
そして、次のように実装されてIRepositoryクラスのdeleteメソッド:
public void Delete(T entity)
{
ObjectSet.DeleteObject(entity);
}
をそれはすべての非常に簡単だと私たちは」この時点まで問題はありませんでしたが、コレクションのオブジェクトを削除しようとするたびにこのエラーが発生します。 deleteメソッドにブレークポイントを設定してObjectSetにカーソルを置いて、すべての結果が展開されるように結果を展開すると、DeleteObjectは正常に動作しますが、ObjectSetからすべてのアイテムがロードされないと、コレクションの変更でエラーが発生します。
私はPOCOまたはIRepositoryを使用せずにテストベッドをセットアップし、正常に動作するので、基本的には私が紛失していることを本当に気にしています。私たちは、このパターンを複数のプロジェクトで使用することにかなり深く関わっており、人々はそれを修正しようとするのではなく、むしろ取り組んでいます。
何か助けや洞察に感謝します。
EDIT:
これは非常に奇妙ですが、私は、モデルから特定のエンティティを削除すると、このエラーが表示されなくなりますが、我々は巨大なモデルを持っていると私は最初に特定のテーブル以外のすべてを取り外して、私はそれを追跡することはできません削除で。誰もこれまでにこれまでに遭遇したことがありますが、私たちは継承テーブル(タイプごと)を使用していますが、これが問題であることを証明することはできません。
SECOND EDIT:
OK私はタイプの継承entitesあたりのテーブルを除くモデルからすべてを削除し、私は1つの派生型以外のすべてを削除し、それが正常に動作していることから、削除しようとするとエラーが発生します。だから私の質問は、他の誰もこのタイプの継承のテーブルを使用しているときにこの問題がありますか?
カスケード関連のエンティティはありますか?私は何の問題もなく何度もPOCOでTPTを使用しました。 –
問題を再現するテストベッドに接続するように依頼しました。私が戻ってくるものを見てください。私はTPTでこれまでにこの問題を抱えていないので、直接問題ではないかもしれません。 https://connect.microsoft.com/VisualStudio/feedback/details/740754/poco-entity-framework-4-with-リポジトリ - パターン - コレクション - 変更 - エラー - 削除 - 詳細 – user351711