Автогенерация первичного ключа (Guid) Entity Framework CTP5 - PullRequest
1 голос
/ 10 апреля 2011

У меня есть следующий класс 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 ]

8 голосов
/ 10 апреля 2011

Разве у вас не должно быть:

    [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid AccountId { set; get; }

?

3 голосов
/ 05 января 2014

Джефф ответил правильно.Просто небольшой совет для вас.Используя EF6, я написал следующую конфигурацию, чтобы установить все поля с именем «Id» и ввести «Guid» в качестве идентификатора.

modelBuilder.Properties<Guid>()
           .Where(info => info.Name.ToLower()== "id")
           .Configure(configuration => configuration.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity));

Так что мне не нужно писать [DatabaseGenerated(DatabaseGenerationOption.Identity)] каждый раз.

0 голосов
/ 10 апреля 2011

Звучит так, как будто вам необходимо обновить свойство AccountId со строки на один из упомянутых типов данных в исключении:

int, bigint, smallint, tinyint или десятичное или числовое с масштабом 0 и ограниченнымбыть ненулевым

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

...