В или (или во всех) 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;