1

.NET4ライブラリでEF5.0コードファーストを使用しています。クラスメンバーをタイプに設定しようとしてEnumいますが、データベースに永続化されず、EFがコードに基づいてデータベースを作成しているときにランタイム例外が発生しません。

もちろん、その列挙型に対してクエリを実行しようとすると、次のようになります。

var departments = db.Departments
                    .Where(dep => dep.Name == DepartmentNames.English);

次のような例外が発生します。

The specified type member 'Name' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

Microsoftの列挙型の使用例を使用しています:http://msdn.microsoft.com/en-us/data/hh859576.aspx

列挙型メンバーはまだサポートされていませんか?EF 5.0は、.NET 4環境でホストされている場合と、.NET 5環境でホストされている場合でどういうわけか異なりますか?

4

1 に答える 1

2

.NET Framework 4.5 (System.Data.Entity.dll) に存在する EF 5 コンポーネントで最初に導入された列挙型。EF5 を使用しているが、.NET Framework 4 をターゲットにしている場合、.NET Framework 4 の一部である System.Data.Entity.dll では列挙型がサポートされていないため、列挙型はサポートされません。したがって、.NET Framework 4 の EF5 は.NET Framework 4.5 の EF5 と比較すると、範囲が限定されています。.NET Framework 4.5 を対象とする場合は利用可能で、.NET Framework 4 を対象とする場合は利用できないその他の機能には、空間型、テーブル値関数、複数の結果セットを返すストアド プロシージャなどがあります。別の方法は、System.Data.Entity.dll に依存しない EF6 (数週間前に出荷されたアルファ リリース) に移行することです。したがって、.NET Framework 4.5 と .NET Framework 4 の両方で EF5 に出荷されたすべての機能といくつかの機能をサポートします。もっと(例 .NET Framework 4.5 の非同期)。EF6 は Microsoft のオープン ソース プロジェクトであり、すべての詳細は次の場所にあります。http://entityframework.codeplex.com/

于 2012-11-18T19:08:07.063 に答える