Автоматическое создание первичного ключа (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.

person taher chhabrawala    schedule 10.04.2011    source источник
comment
Примечание. Это также происходит, если вы используете зарезервированное имя столбца идентификаторов Id в своем классе модели, даже если у вас есть [Key,DatabaseGenerated(...)] — вы должны переименовать свое свойство идентификатора в своей модели во что-то другое, как в этом случае, AccountId.   -  person Matt Borja    schedule 22.09.2016


Ответы (3)


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

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

?

person Jeff    schedule 10.04.2011
comment
Точно... Я случайно набрал строку... как только я изменил ее на Guid, она сработала.... спасибо - person taher chhabrawala; 10.04.2011

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

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

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

person Artiom    schedule 05.01.2014

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

int, bigint, smallint, tinyint, десятичное или числовое значение со шкалой 0, ограниченное значением, не допускающим обнуления

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

person ChristiaanV    schedule 10.04.2011