EntityFramework - Как получить имя таблицы из Edmx

Я работаю с asp.net mvc3.

У меня есть edmx, созданная модель данных объекта ADO.NET. (данные-сначала)

TestDb.Designer.cs

namespace Test.Web.DataModel
{
    public partial class TestDbContext : ObjectContext
    {
         public ObjectSet<T_Members> T_Members { ... }
         public ObjectSet<T_Documents> T_Documents { ... }
         ....
    }
}

T_Members, T_Documents ‹-- Это свойство представляет собой таблицу базы данных.

Я хочу получить список этой таблицы.

Как получить список имен таблиц из EDMX?


person isnotnull    schedule 26.04.2013    source источник
comment
Аналогично: stackoverflow.com/q/1895455/150342   -  person Colin    schedule 24.12.2013


Ответы (2)


Отвечай сам.

TestDbContext context = new TestDbContext();
var tableList = context.MetadataWorkspace.GetItems<EntityType>(System.Data.Metadata.Edm.DataSpace.CSpace);
foreach (var item in tableList)
{
    item.Name;
}

Чтобы помочь людям, у которых такая же проблема...

person isnotnull    schedule 29.04.2013
comment
Абсолютно самый простой способ сделать это. Браво! - person Kristopher; 17.10.2013

Я думаю, что ваше «решение» работает только тогда, когда таблица и объект имеют одно и то же имя. Если вы переименуете свою сущность в Document (без префикса), это не удастся.

Цитата из Microsoft сотрудника:

Нет, к сожалению, с помощью API метаданных невозможно получить имя таблицы для данного объекта. Это связано с тем, что метаданные сопоставления не являются общедоступными, поэтому нет возможности перейти из C-Space в S-Space с помощью API-интерфейсов EF.

person Jowen    schedule 24.12.2013
comment
Это старый пост. Взгляните на решение на той же странице. Это работает — по крайней мере, для простой иерархии наследования. И содержит ссылки на дополнительную информацию о доступе к API метаданных stackoverflow.com/a/18964974/150342. - person Colin; 24.12.2013