編集:テストに基づいて更新された問題の説明 - 9月12日、2011年EF4.1は非サポート例外を取得しますか?
私は.ToList()を呼び出したときに私は(「指定されたメソッドがサポートされていません。」)NotSupportedExceptionをスローこのクエリを持っています。
IQueryable<FileDefinition> query = db
.FileDefinitions
.Include(x => x.DefinitionChangeLogs)
.Include(x => x.FieldDefinitions.Select(y => y.DefinitionChangeLogs)) // bad
.Include(x => x.FieldDefinitions.Select(y => y.FieldValidationTables)) // bad
.Where(x => x.IsActive);
List<FileDefinition> retval = query.ToList();
私が「bad」とコメントした行をコメントアウトすると、クエリが機能します。私は同じエフェクトを使って、オブジェクトモデル内に異なるネストされたエンティティを含めることも試みました。任意の2を含めるとクラッシュが発生します。入れ子にすると、ナビゲーションプロパティのナビゲーションプロパティを意味します。私はまた、文字列パスで.Includeメソッドを使用してみました:同じ結果。
これは、NETのMySQLコネクタ/ 6.3.4を使用して、データベースストアとしてのMySQL 5.1(明らかにInnoDBテーブル)を使用している:
私のテーブルの構造は次のようになります。
だから私の質問は:なぜこの仕事しませんの?
注:this linkのような関連するエンティティを明示的に読み込むと動作します。しかし、EFが私のデータモデルを嫌う理由を知りたい。
ANSWER:MySQLのコネクタは明らかに含まれ第二のネストされたエンティティを処理することではありません。 .NET EFではなくNotSupportedExceptionがスローされます。この同じエラーは、私がEF4.0を使ってこれを試したときにも現れましたが、当時の私の研究は、それが問題を引き起こしている自己追跡エンティティであると信じさせました。私は、最新のコネクタにアップグレードしようとしたが、それはOut of Sync errorを起こし始めました。これはMySQLを嫌う私にとってはyet another reasonです。
それはその後動作しますか? – Slauma
@Slaumaはい、2行目は単独で動作します。私はより多くのテストを行い、クラッシュの原因となる2番目と3番目の組み込みの組み合わせであるようです。彼らは自分で働くが、一緒には働かない。 FieldValidationTablesコレクションはデータベース内のビューからロードされ、EFモデルの関係を手動で設定する必要がありました。フィールドにはFieldDefinitionIdとTableNameがあります。 FieldDefintion 1 <-> * FieldValidationTable –
この問題の原因はわかりません。答えを得るためには、質問に詳細を追加する必要があります(基本的に、単純なモデルの例では他の人に問題を再現させるため)。 – Slauma