Как выяснить, какие ключевые свойства для типа находятся в ObjectContext? - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть тип сущности через объект Type и ObjectContext. Из тех, как я могу получить имена ключевых свойств (не их значения)?

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Вы можете попробовать это:

var objectSet = context.CreateObjectSet<TEntity>();

// Get entity set for current entity type
var entitySet = objectSet.EntitySet;
// Get names of the entity's key properties
var keyNames = entitySet.ElementType.KeyMembers.Select(e => e.Name).ToList();

Здесь - это пример того, как его использовать для создания универсального метода для загрузки сущности по ключу (в примере используются только сущности с одним ключом, но его можно расширить).

0 голосов
/ 14 апреля 2011

Кроме того, следующие работы, хотя и более многословны, чем ответ Ладислава, но имеют преимущество работы с любым типом без дополнительной рефлексии:

using System.Data.Metadata.Edm;
...
IEnumerable<string> keyNames = objectContext.MetadataWorkspace
    .GetItems<EntityType>(DataSpace.OSpace)
    .Single(edmType => edmType.FullName == type.FullName)
    .KeyMembers
    .Select(e => e.Name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...