В каждом объекте EF4 есть свойство, называемое EntityKey
, которое содержит массив EntityKeyValues
(массив в случае составного ключа).
Вы можете ссылаться на это непосредственно на экземпляре вашей сущности или создать общий вспомогательный метод, который делает это под прикрытием. Если я смогу протестировать пример кода, я выложу его здесь.
Редактировать : EntityKeyValue представляет собой KeyValuePair<TKey, TValue>
, где key
- это поле первичного ключа объекта, а value
- соответствующее значение.
Например, у меня есть объект с именем Company
, первичным ключом которого является поле Symbol
.
var firstCompany = (from c in context.Companies select c).FirstOrDefault();
var kvp = firstCompany.EntityKey.EntityKeyValues[0];
// kvp shows {[Symbol, FOO]}
В своей песочнице я заметил, что это свойство было null
, когда я создал сущность в коде. Но как только я прочитал объект из базы данных, он был правильно заполнен. Таким образом, похоже, что концепция первичного ключа EF4 вступает в действие только после того, как она попадает в базу данных. Хотя вы можете установить его заранее, если хотите.