14

.NET 4 で EF5 を使用する必要があり、4.0 バージョンのライブラリには存在しない HasDatabaseGenerationOption.Identity を使用してクラスをマッピングするときに、参照の問題が発生しました。

以下は失敗しています:

this.Property(t => t.DeploymentLogId)
              .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

回避策を知っている人はいますか?

4

5 に答える 5

24

NuGet を使用して .NET 4.5 を対象とするプロジェクトに EntityFramework を追加すると、EntityFramework 5.0 が追加されます。

後でプロジェクトを .NET 4.0 をターゲットに変更しても、EntityFramework 5.0 は引き続き参照されます。

これを修正するには、NuGet を使用して EntityFramework をアンインストールし、再度 NuGet に追加します。これにより、.NET 4.0 でサポートされる最後のバージョンである EntityFramework 4.4 が追加されます。

それでも機能しない場合は、特定の EF バージョンへの参照がいくつかある可能性がありますApp.config。これらは削除できます。

于 2012-09-26T10:24:32.807 に答える
11

名前空間はEF5.0で変更されました。これを追加してみてください:

using System.ComponentModel.DataAnnotations.Schema;
于 2012-08-29T18:25:54.270 に答える
3

データ注釈を使用してみましたか?

public class DeploymentLog
{
   [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int DeploymentLogId { get; set; }
于 2012-08-29T18:15:07.443 に答える
1

System.ComponentModel.DataAnnotations.Schema4.5 以降、.NET Framework の一部にすぎません

4.0 を使用している場合は、Entity Framework が提供します。DatabaseGeneratedOptionと他のファイルのソース コードを見ると、それらのコードが条件付きでラップされていることがわかります。

#if NET40
...
#endif
于 2013-02-14T10:35:59.410 に答える
1

ごく最近、古いプロジェクトでその問題が発生しました。

  • プロジェクト内の EntityFramework 参照を削除します
  • プロジェクトを右クリックし、NuGet パッケージの管理を実行し、[更新] カテゴリに移動して、一覧にあった Entity Framework 項目の [更新] をクリックしてバージョン 6 にします。
于 2015-06-29T10:03:41.853 に答える