Я получаю эту ошибку: «Тип сущности DisplayFormatAttribute требует определения первичного ключа». - PullRequest
0 голосов
/ 12 июня 2019

Я получаю эту ошибку

"Тип сущности 'DisplayFormatAttribute' требует определения первичного ключа." на терминале, когда я пытаюсь запустить этот код

Dotnet ef migrations add firstMigrationAddModels

Я создаю код миграции базы данных в первую очередь, используя ядро ​​Entity-Framework 2.0

У меня есть много моделей (классов), и один класс наследуется от другого. Чтобы решить эту проблему, я использовал функциональность наследования ядра Entity Framework под названием Table Per Hierarchy (TPH)

https://www.learnentityframeworkcore.com/inheritance

Я поместил и производный и базовый класс в Dbset dbcontext

public DbSet<Person> people { get; set; }
public DbSet<Student> students { get; set; }

У класса STUDENT нет PK, потому что он есть у Person.

У меня также есть классы, которые имеют много-много отношений, и я решил это, создав класс моста

Ошибка говорит, что мне нужен первичный ключ внутри "DisplayFormatAttribute" но у меня нет доступа к этому классу

Я использую DataAnotationAttributes, такие как Maxlength () и minlength () в моих моделях, поэтому я как-то получаю доступ к этому классу.

Другие типы, которые я использую: PhoneAttribute, EmailAddressAttribute

[MaxLength(15)]
public PhoneAttribute Phone { get; set; }
[MaxLength(254)]
public EmailAddressAttribute Email { get; set; }

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Вы должны установить одно из своих свойств, используя аннотацию данных [Key]

Этот [Key] практически будет идентификатором вашей таблицы данных.

0 голосов
/ 12 июня 2019

Я решил это. Проблема заключалась в моем номере телефона и типах электронной почты

public PhoneAttribute Phone { get; set; }
public EmailAddressAttribute Email { get; set; }

Не существует эквивалентного типа сервера SQL для PhoneAttribute и EmailAddressAttributes

Я вынул их и изменил на int и string соответственно, и это сработало

public int Phone { get; set; }
public string Email { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...