У меня есть существующая БД, и я использую подход «Сначала БД» с Entity Framework 4.1. К сожалению, БД использует некоторые устаревшие соглашения об именах, так что столбцы с первичными ключами часто используют различные имена, такие как «occID». Позже во время проверки EntityFramework выдает исключение при проверке модели объекта, говоря, что
System.Data.Edm.EdmEntityType:: EntityType 'Occupancy' ключ не определен. Определите ключ для этого EntityType.
У этой сущности есть уникальный ключ (и он также помечен как EntityKey в модели Edmx), но валидатор модели продолжает жаловаться. Единственное решение, которое я нашел, - это подписать свойство в сгенерированном классе DbContext аннотацией данных [Key], чтобы EF знал, какое свойство является ключом.
Есть ли другие способы сделать это? Я предполагаю, что EF проверяет некоторые соглашения о кодировании, чтобы определить, какое свойство является ключом. Поскольку это не подход, основанный на коде, я не могу изменять сгенерированный код вручную, так как изменения теряются каждый раз, когда я что-то изменяю в модели.
Это соответствующая часть файла EDMX:
<EntityType Name="occupancy">
<Key>
<PropertyRef Name="occID" />
</Key>
<Property Name="occID" Type="int" Nullable="false"
StoreGeneratedPattern="Identity" />
<Property Name="occPDM" Type="int" />
<Property Name="occDatePDM" Type="datetime" />
<Property Name="occDatePC" Type="datetime" />
<Property Name="occOccupancy" Type="int" />
<Property Name="occSityControlID" Type="bigint"
/>
<Property Name="occSityControlLine" Type="int"
/>
<Property Name="occPDM_Id" Type="bigint" />
<Property Name="occServiceCar" Type="int" />
<Property Name="occMoneyCar" Type="int" />
<Property Name="occPdmParentId" Type="int" />
</EntityType>