Автогенерация первичного ключа (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 и ограниченные для ненулевого значения

Любая причина, почему это теперь строка?

Другие вопросы по тегам