EntityType 'x' не имеет определенного ключа, повторное использование DB сначала в коде First

Вопрос:

У меня есть класс с именем “Власть” в библиотеке, созданной методом Database First

Поскольку мы знаем, что база данных сначала генерирует все классы автоматически, также основной ключ, определенный для каждого класса, я также создал класс “Пользователь”, обладает свойством класса “Власть”, в другой библиотеке у меня есть класс “PacsUser”, полученный из “Пользователь”. Я использую код первый подход к разработке “PacsUser”, когда я хочу, чтобы PacsUser возвращал конкретного пользователя, он дает мне “EntityType”, который не имеет определенного ключа “

Я должен определить ключ для класса Authority в OnModelCreating для PacsUserDBContext, например:

modelBuilder.Entity<Authority>().HasKey(e => e.AID);

почему DbModelBuilder в PacsUserDBContext автоматически распознает первичный ключ Управления? или, по крайней мере,

modelBuilder.Entity<Authority>().ToTable("Authority");

все работает нормально (например, например).

Они оба (Административный отсек DB-First и PacsUser по коду-First) используют Entity Framework ORM, поэтому

Почему код сначала не знает первичный ключ органа власти?

Есть ли способ, которым DbModelBuilder автоматически распознает первичные ключи?

Любая идея будет оценена по достоинству.

Лучший ответ:

Первичный ключ. Первый код означает, что свойство является первичным ключом, если свойство класса называется “идентификатор” (не чувствителен к регистру) или имя класса, за которым следует “ID”. Если тип свойства первичного ключа является числовым или GUID, он будет настроен как столбец идентификатора.

Например, если у вас есть следующий класс

public class Department 
{ 
   // Primary key 
   public int DepartmentID { get; set; } 

    . . .  

}

EF будет использовать DepartmentID качестве первичного ключа, в качестве альтернативы вы можете использовать Id вместо DepartmentID. Но ваш ключ класса Authority (AID) не следует выше соглашения. поэтому вам нужно определить настраиваемое сопоставление для него или изменить AID на Id или AuthorityId.

Вы можете видеть более общие соглашения EF по умолчанию здесь

Оцените статью
TechArks.Ru
Добавить комментарий