Сопоставление основного ключа со столбцом с другим именем в ядре Entity Framework

#entity-framework #entity-framework-core #ef-core-3.1

#entity-framework #entity-framework-core #ef-core-3.1

Вопрос:

У меня довольно большая база данных, и я создаю небольшое приложение поверх нее для управления небольшой частью данных. Проблема в том, что в database team существует соглашение, согласно которому столбцы, являющиеся первичными ключами в базе данных, именуются PK_EntityName .

Теперь я не хочу вносить это соглашение в код C #.

Как мне сопоставить свойство Id класса C # со PK_EntityName столбцом, используя fluent api?

Заранее благодарю вас!

Комментарии:

1. learn.microsoft.com/en-us/ef/core/modeling/…

2. builder.Property(...) возвращает объект типа, для PropertyBuilder<T> которого существует метод расширения HasColumnName() . builder.HasKey(...) (который используется для указания основного ключа для сущности) возвращает объект типа KeyBuilder . И для этого типа вы не можете вызвать HasColumnName() 😥

3. Они имеют разное назначение (настраивают разные вещи). HasKey заключается в том, чтобы указать, какое свойство объекта является PK. Имя столбца свойства PK (или любого другого) настраивается через Property(...).HasColumnName(...) . т. е. вам нужно HasKey(e => e.Id) (хотя это избыточно, потому что имя свойства Id по соглашению предполагается PK, поэтому вы можете пропустить его) плюс Property(e => e.Id).HasColumnName("PK_EntityName") 🙂

4. ООООО!!!!!!! Sweeeeeeet! Большое вам спасибо за просвещение!!!