10

.NET 4.0 を対象とし、EF 5.0 を使用するプロジェクトがあります。ターゲット フレームワークを 4.5 に変更した後 (および .NET 4.5 アセンブリを使用するように EF 5.0 参照を更新した後)、データ注釈が機能しなくなったようです。例えば:

[Table("ApplicationSession", Schema = "Application")]
public class ApplicationSessionEntity
{
    [Key, ForeignKey("GenericSession")]
    public int GenericSessionID { get; set; }
...

以前は正常に動作していましたが、実行時に : がスローDbContextされます。InvalidOperationExceptionUnable to determine the principal end of an association...

これを解決するために Fluent api 呼び出しを追加できます (実際に実行されます) が、テーブルが "dbo" スキーマにないことを認識しません。繰り返しますが、Fluent API を使用してこれを解決できることはわかっていますが、データ注釈が突然無視されるのはなぜですか?

ありがとう!

4

2 に答える 2

8

.NET Framework 4.5 では、EF 注釈が EF.dll から System.ComponentModel.Annotations アセンブリに移動されました。.NET Framework 4.5 をターゲットにしていても、EntityFramework.dll v4.4.0.0 への参照がまだどこかにあるようです。その結果、クラスは 4.4.0.0 アセンブリの属性でコンパイルされます。実行時に新しい EntityFramework.dll (5.0.0.0) が使用され、System.ComponentModel.DataAnnotations アセンブリから属性を検索します。EF.dll 4.4.0.0 のものがあるため、それらが見つからないため、属性が無視されているように見えます。

于 2013-01-07T21:25:02.630 に答える
0

.NET バージョン 4.5 以降を使用している場合、EF の外に移動されたことは事実です。しかし、.NET 4.0 でコンパイルすると、そのまま使用できることがわかりDataAnnotationsます。コードの中を見ると、次のことがわかります。

#if NET40

namespace System.ComponentModel.DataAnnotations
{
...
}
#endif

そう...はい、他の回答と同じですが、これを指摘したいです!

ハッピーコーディング!

于 2013-09-20T13:52:15.640 に答える