Использование Entity Framework с первым кодом без автоинкремента - PullRequest
2 голосов
/ 20 марта 2019
public class Movie
{
    public int Id { get; set; }

    [Required]
    [StringLength(255)]
    public string Name { get; set; }

    public virtual IList<Genre> Genre { get; set; }
    public virtual IList<Cast> cast { get; set; }

    [Display(Name = "Release Date")]
    public DateTime ReleaseDate { get; set; }
}

public class Genre
{
    public int Id { get; set; }

    [Required]
    [StringLength(255)]
    public String Name { get; set; }
}

Это две мои модели. Они отлично работают, за исключением того, что автоинкремент не реализован для первичного ключа.

Я получаю сообщение об ошибке, что идентификатор равен нулю, и я не могу вставить его в базу данных, что мне кажется логичным. Есть идеи, почему нет никаких автоматических приращений и, во-вторых, как я могу их добавить? Я использую миграцию кода в .NET Framework 4.6, это приложение Winforms.

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

В столбце идентификатора необходимо указать два атрибута

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

Согласно этому блогу :

Если вы забудете упомянуть [Ключ], предполагая, что вы сделали его ненулевым, и явно указали> Id в коде C #, EF попытается передать NULL с момента его идентификации и сгенерирует исключение « Невозможно вставить значение NULL в столбец ………. «, поэтому можно просто изменить DatabaseGeneratedOption.Identity на DatabaseGeneratedOption.None - что может не соответствовать требованию автоматического приращения.Итак, просто сохраните [Key] и дайте генератору БД заполнить его для вас.Это подход, когда дело доходит до параллелизма.

Я надеюсь, что это отвечает на ваш запрос.

1 голос
/ 20 марта 2019

Следующая статья объясняет использование атрибута Key в EF 6 и EF Core.

http://www.entityframeworktutorial.net/code-first/key-dataannotations-attribute-in-code-first.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...