Получить определение модели данных для сущности во время выполнения - PullRequest
0 голосов
/ 08 декабря 2011

В или (или во всех) EF Code-First, EF Model-First или L2S можно определить, например, имя исходной таблицы базы данных - при условии однозначного одно отображение - заданный класс Entity во время выполнения?

Например, если у меня есть база данных с таблицей «Люди», которую я сопоставил через вышеупомянутые ORM с моим классом сущности «Персона», есть ли способ, переданный соответствующим DataContexts и / или классу сущности Type / Экземпляр, чтобы определить исходное имя таблицы базы данных; "Люди"?

Очевидно, я мог бы сделать это, добавив метаданные к сущностям; например, используя измененный шаблон T4 или пользовательские атрибуты (аналогично тому, как, по моему мнению, L2S хранит информацию в контексте), но мне интересно, могу ли я сделать это «из коробки»?

Заранее спасибо!

РЕДАКТИРОВАТЬ: Хорошо, я думаю, что я нашел, как это сделать в Linq 2 Sql, поэтому вопрос остается только для EF.

// for L2S the Table Name can be retrieved as so...
object[] info = typeof(TSource).GetCustomAttributes(typeof(System.Data.Linq.Mapping.TableAttribute), true); 
String table = (info[0] as System.Data.Linq.Mapping.TableAttribute).Name; 

РЕДАКТИРОВАТЬ: Я не уверен, что лучше, но, кажется, вы также можете получить имя таблицы следующим образом. На первый взгляд, я предпочитаю этот второй подход, хотя я бы предпочел его больше, если бы Mapping.GetTable был Generic - GetTable<TSource>()

// for L2S the Table Name can be retrieved via the Context's mapping as so:
string TableName = context.Mapping.GetTable(typeof(TSource)).TableName;

1 Ответ

2 голосов
/ 09 декабря 2011

Краткий ответ относительно EF: нет, это нелегко сделать.

Расширенное обсуждение и возможные обходные пути: Получение имени таблицы базы данных из метаданных Entity Framework

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...