когда делаю migrations выдаёт ошибку: The entity type 'Person' requires a primary key to be defined

158
08 декабря 2020, 07:30

когда делаю migrations выдаёт ошибку:

The entity type 'Person' requires a primary key to be defined.

Мой код:

public class Person
{
    public int CustomerID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Order_Product { get; set; }
}
public class Information
{
    public int OrderID { get; set; }
    public int CustomerID { get; set; }
    public string Title { get; set; }
    public byte[] Photo { get; set; }
    public string Text { get; set; }
}
using Microsoft.EntityFrameworkCore;
public class VideoGamesDatabaseContext : DbContext
{
    public DbSet<Person> Persons {get; set;}
    public DbSet<Information> Informations {get; set;}
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=localhost,2727; Database=Persons; User=sa; Password=Pa$$word1");
    }
}
Answer 1

Добавьте поле

public int PersonId { get; set; }

или просто

public int Id { get; set; }

Согласно текущим соглашениям EF автоматически распознает по наименованию первичный ключ.

Альтернативный вариант - не менять наименование поля, а проставить атрибут [Key] над полем, которое у вас первичный ключ (я правда не уверен, что это именно это поле первичный ключ)

[Key]
public int CustomerID { get; set; }

Но это вариант не так удобен, когда вы будете указывать внешние ключи - они автоматом не подцепятся и придётся прописывать атрибуты. (Впрочем - может вам так нравится, ручной контроль и т.п.)

Обратите внимание, в Informations у вас тоже нет ключа.

Ссылки по теме:

  • https://www.entityframeworktutorial.net/code-first/key-dataannotations-attribute-in-code-first.aspx
READ ALSO
Многопоточность синхронизация

Многопоточность синхронизация

Как закончить работу программы корректно:

101
Логирование и сохранение в php monolog

Логирование и сохранение в php monolog

Всем привет, мне нужно сделать лог вставки в базу данных и сохранить этот лог в файлНаведите пожалуйста пример или документацию ибо я не нашел

113
Как передать id в ajax по клику

Как передать id в ajax по клику

Делаю корзину, много товаров, хотел прикрутить ajax на тык по кнопке, не могу понять как передать значение $cartItem->rowId для удаления выбранного...

159