Entity Framework 5 на .NET 4.0 - DatabaseGeneratedOption.Identity - undefined
Мне нужно использовать EF5 на .NET 4, и я столкнулся с проблемой ссылки при сопоставлении моего класса с HasDatabaseGenerationOption.Identity, которого нет в версии 4.0.
Не удается выполнить следующее:
this.Property(t => t.DeploymentLogId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Кто-нибудь знает о работе?
Ответы
Ответ 1
Использование NuGet для добавления EntityFramework в проект, который нацелен на .NET 4.5, добавит EntityFramework 5.0.
Если позднее вы измените проект на целевой .NET 4.0, то по-прежнему ссылается на EntityFramework 5.0.
Чтобы исправить это, используйте NuGet для удаления EntityFramework и добавьте его обратно, также в NuGet. Это добавит EntityFramework 4.4, которая является последней поддерживаемой версией для .NET 4.0.
Если он все еще не работает, могут быть некоторые ссылки на конкретную версию EF в App.config
. Они могут быть удалены.
Ответ 2
Пространство имен изменено в EF 5.0. Попробуйте добавить это:
using System.ComponentModel.DataAnnotations.Schema;
Ответ 3
Вы пытались использовать аннотацию данных?
public class DeploymentLog
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DeploymentLogId { get; set; }
Ответ 4
System.ComponentModel.DataAnnotations.Schema
был только частью .NET Framework с 4.5
Если вы используете 4.0, то Entity Framework предоставит его вам. Если вы посмотрите на исходный код DatabaseGeneratedOption и другие файлы, вы увидите, что их код завернут в условный
#if NET40
...
#endif
Ответ 5
У нас была эта проблема совсем недавно по старому проекту, и то, что мы сделали, было просто
- удалить ссылку EntityFramework в проекте
- щелкните правой кнопкой мыши по проекту, выполните управление пакетами NuGet, перейдите в категорию "Обновления" и нажмите "Обновить" на элементе "Структура сущностей", который был в списке до версии 6