Автогенерация первичного ключа (Guid) Entity Framework CTP5
У меня есть следующий класс POCO
public class Account
{
[Key,DatabaseGenerated(DatabaseGenerationOption.Identity)]
public string AccountId { set; get; }
public string FirstName { set; get; }
public string LastName { set; get; }
public string Email { set; get; }
}
Я получаю следующее исключение при создании базы данных
Identity column 'AccountId' must be of data type int, bigint, smallint, tinyint, or decimal or numeric with a scale of 0, and constrained to be nonnullable.
3 ответа
Решение
Разве вы не должны иметь:
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid AccountId { set; get; }
?
Джефф ответ правильный. Просто небольшой совет для вас. Используя EF6, я написал следующую конфигурацию, чтобы установить все поля с именем "Id" и типом "Guid" в качестве идентификатора.
modelBuilder.Properties<Guid>()
.Where(info => info.Name.ToLower()== "id")
.Configure(configuration => configuration.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity));
Так что мне не нужно писать [DatabaseGenerated(DatabaseGenerationOption.Identity)]
каждый раз.
Похоже, вам нужно обновить свойство AccountId со строки на один из упомянутых типов данных в исключении:
int, bigint, smallint, tinyint или десятичное или числовое со шкалой 0 и ограниченные для ненулевого значения
Любая причина, почему это теперь строка?