Есть ли в Entity Framework 4 Code First поддержка генераторов идентификаторов, таких как NHibernate?

Этот вопрос, заданный год назад, аналогичен: поддерживает ли Entity Framework 4 генераторы для значений id, таких как NHibernate?

Но то, что я хотел бы знать, это то, что первый CTP-код добавляет поддержку страtagsй генерации идентификаторов. Если нет, кто-нибудь знает хорошую точку расширения в EF для реализации чего-то подобного?

В настоящее время я работаю с classами моделей, которые используют идентификатор GUID в качестве идентификатора. При вставке с использованием EF они сохраняют начальные значения Guid.Empty . Я знаю, что вы можете установить значение по умолчанию для столбца в DB для newid() но это побеждает цель создания идентификации на стороне клиента.

Является ли платформа Entity Framework недостаточно зрелой для использования в распределенной, отключенной системе?

Нет. Первый код структуры Entity – это все-таки хорошая обложка вокруг EFv4. Не существует NHibernate-подобных генераторов. Если вам нужен клиентский Id-генератор, вам придется переопределить SaveChanges в производном DbContext и реализовать свою собственную логику назначения идентификаторов новым объектам.

Редактировать:

Некоторые примеры высокого уровня:

 public class Context : DbContext { // Helper for example // DO NOT USE IN REAL SCENARIOS!!! private static int i = 0; public DbSet MyEntities { get; private set; } public Context() : base("connection") { MyEntities = Set(); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity().HasKey(e => e.Id); // Turn off autogeneration in database modelBuilder.Entity() .Property(e => e.Id) .HasDatabaseGeneratedOption(HasDatabaseGeneratedOption.None); // Other mapping } public override int SaveChanges() { foreach (var entry in ChangeTracker.Entries() .Where(e => e.State == EntityState.Added)) { // Here you have to add some logic to generate Id // I'm using just static field entry.Entity.Id = ++i; } return base.SaveChanges(); } } public class MyEntity { public int Id { get; set; } // Other properties } 

Нет.

Mine Entity Framework 4.1.10715, установленная NuGet. возможно, вы можете использовать атрибут

 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id {get;set;} 

(Полный список аннотаций, поддерживаемых в EF 4.1: CTRL + F на странице).

 [Key] public string Id { get; set; } 

а затем использовать новый GUID ToString

 Units.Add( new Unit(){Id=Guid.NewGuid().ToString(), Name="123"}); 
  • Entity Framework Code Только ошибка: модель, поддерживающая контекст, изменилась с момента создания базы данных
  • LEFT JOIN в LINQ для объектов?
  • Обновление отношений при сохранении изменений объектов EF4 POCO
  • Entity Framework / Linq to SQL: Skip & Take
  • Как отключить сущность из контекста в Entity Framework?
  • Сравнение с регистром LINQ to Entities
  • Что такое независимые ассоциации и ассоциации с иностранными ключами?
  • Entity Framework: Где я могу расширить CSDL / MSL?
  • Entity Framework 4 Single () vs First () vs FirstOrDefault ()
  • Ошибка API-интерфейса Asp.Net: тип «ObjectContent`1» не смог сериализовать тело ответа для типа контента «application / xml»; кодировка = UTF-8'
  • Использование MySql с Entity Framework 4 и Code-First Development CTP
  • Interesting Posts

    Автоматически запускать приложение в качестве другого пользователя

    Как создать ссылки в текстовом клиенте?

    Как я могу ускорить свою программу Perl?

    Является ли глобальная память инициализирована на C ++?

    Виртуализация существующей установки

    Как добавить текст к изображению?

    Как выполнить запуск плагина maven непосредственно из командной строки?

    Создание таблицы и диалога мастер-деталировки, как повторно использовать один и тот же диалог для создания и редактирования

    Преобразование массива символов в число int в C

    Spring не может найти конфигурационный файл bean xml, если он существует

    Тихие сбои в C #, казалось бы, необработанные исключения, которые не приводят к сбою программы

    Как найти серийный номер Android-устройства?

    Как удалить простыню вокруг кнопок в Android?

    Установить Windows 8 в устаревших и UEFI: преимущества или недостатки?

    Вывод первого аргумента шаблона с другими параметрами шаблона по умолчанию

    Давайте будем гением компьютера.