Это также возможно без размышлений:
using (var context = new ModelContainer())
{
// Access CSDL
var container = context.MetadataWorkspace
.GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace);
// Access name of related set exposed on your context
var set = container.BaseEntitySets[context.YourEntitySet.EntitySet.Name];
// Access all properties
var properties = set.ElementType.Members.Select(m => m.Name).ToList();
// Access only keys
var keys = set.ElementType.KeyMembers.Select(m => m.Name).ToList();
}
Как видите, у вас есть доступ к гораздо большему, чем имена.Пример показывает, что теперь вы можете узнать, какое свойство является частью ключа.Если вы обращаетесь к Members
напрямую, вы можете узнать, какое свойство является скалярным, сложным типом или свойством навигации.
Вся информация уже загружена, поэтому нет необходимости размышлять.Если вы хотите использовать отражение, не забудьте использовать его только один раз (в первый раз, когда вам это нужно), а затем сохраните и повторно используйте полученные имена свойств.Отражение медленное, поэтому использовать его каждый раз, когда вам нужны имена, - плохая практика.