Использование 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, а второй также, поэтому я получаю исключение ограничения
Кто-нибудь знает исправление?
Ответы
Ответ 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 вместо компактной базы данных, он отлично работает.