Есть ли в 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"}); 
  • LEFT JOIN в LINQ для объектов?
  • Представление ограничения FOREIGN KEY может вызвать циклы или несколько каскадных путей - почему?
  • Entity Framework - добавить свойство навигации вручную
  • Как отключить сущность из контекста в Entity Framework?
  • Entity Framework / Linq to SQL: Skip & Take
  • Создание динамических запросов с инфраструктурой сущностей
  • Как добавить проверку на мои classы POCO (шаблон)
  • Entity Framework 4 / POCO - С чего начать?
  • Как преобразовать DbSet в инфраструктуру Entity в ObjectQuery
  • Как установить значение по умолчанию для POCO в EF CF?
  • EF4 Code First: как добавить отношения без добавления свойства навигации
  • Interesting Posts

    Арифметика с плавающей точкой не дает точных результатов

    Использование std: fstream, как запретить доступ (чтение и запись) в файл

    Какова цель фаз перетасовки и сортировки в редукторе в Программе сокращения карты?

    Как заставить Windows 7 НЕ использовать корзину для утилизации на съемном диске?

    В C # Winforms есть способ поместить пунктирную границу вокруг всех элементов управления и показать точки захвата при выборе определенных элементов управления во время выполнения?

    MySQL против PostgreSQL? Какой я должен выбрать для своего проекта Django?

    Маркировка classа Static в VB.NET

    Установите компилятор C ++ на старый компьютер MS-DOS с дискетами

    MATLAB находит и применяет функцию к значениям повторяющихся индексов

    Перенаправление на предыдущую страницу после аутентификации в node.js с использованием файла паспорт.js

    Оптимизация MySQL для ALTER TABLE of InnoDB

    Проверка орфографии для docbook

    Что плохого в встроенном CSS?

    Как найти все controllerы в Spring MVC?

    Обработка сигналов в pthreads

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