Теоретично так. Практично я не впевнений, тому що з простим тестом я не зміг отримати цю інформацію під час виконання - я бачу їх в відладчику, але я не можу отримати їх, тому що тип, який потрібно використовувати, є внутрішньою структурою.
Теорія. Вся інформація про відображення доступна під час виконання, але не через відображення. Вони зберігаються в екземплярі класу MetadataWorkspace
, який, безумовно, не призначений для безпосереднього використання, оскільки кожна взаємодія з цим класом вимагає певного часу на відладчик, перш ніж ви знайдете потрібні дані. Ці дані недоступні через API DbContext. Потрібно перетворити DbContext
назад на ObjectContext
і отримати доступ до MetadataWorkspace
.
ObjectContext objContext = ((IObjectContextAdapter)dbContext).ObjectContext;
GlobalItem storageMapping = objContext.MetadataWorkspace.GetItem("NameOfYourContextClass", DataSpace.CSSpace);
Тепер storageMapping
- примірник класу System.Data.Mapping.StorageEntityContainerMapping
, який є внутрішнім
. Як я розумію, цей клас повинен бути уявним для MSL = відображення між сховищем і концептуальною моделлю.
Якщо ви використовуєте відладчик, ви можете вивчити примірник, і ви знайдете інформацію про відображення між властивостями і стовпцями (досить глибокий вкладений), так що ви також можете використовувати відображення, щоб отримати їх, але це відображення на недержавному інтерфейсі класів, які ви не володієте так що будь-який патч/виправлення/оновлення .NET framework може порушити вашу програму.