Подтвердить что ты не робот

Использование Guid как PK с кодом EF4 First

У меня есть этот класс и таблица:

public class Foo
{
public Guid Id {get;set;}
public string Name {get;set;}   
}

create table Foo
(
id uniqueidentifier primary KEY DEFAULT (newsequentialid()),
name nvarchar(255)
)

проблема в том, что когда я пытаюсь сохранить новый foo, первый идет с 0000-000-00... id, а второй также, поэтому я получаю исключение ограничения

Кто-нибудь знает исправление?

4b9b3361

Ответ 1

Вы установили Identity StoreGeneratedPattern?
Вы можете сделать это в методе OnModelCreating:

modelBuilder.Entity<Foo>().Property(o => o.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

или используя атрибуты DataAnnotation:

public class Foo {
  [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  public Guid Id {get;set;}
  public string Name {get;set;}
}

Ответ 2

Просто основанный на Devart Solution, у меня была эта проблема и с помощью

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]

аннотация данных не работает. Причиной этого я пользовался (как было предложено в одном из первых уроков кода) базу данных SqlServerCompact, которая не поддерживает идентификатор Guid. Просто подумал, что я отправлю сюда, если у кого-нибудь еще будет такая проблема. Если вы измените строку подключения, чтобы создать компакт-диск SqlServer вместо компактной базы данных, он отлично работает.