Как получить список всех таблиц в структуре данных Entity?

Мне нужно получить список всех таблиц в Entity Data Framework.

Я знаю, что в Linq2SQL мы можем использовать что-то подобное. var dataContext = новый DataContext(); var dataContextTableNames = (из таблиц в dataContext.Mapping.GetTables() выберите таблицы.TableName).ToList();

Но мне нужно получить список всех таблиц в Entity Data Framework. Существует любая работа, чтобы получить аналогичный список в Entity Data Framework.

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


person SKumar    schedule 29.12.2010    source источник


Ответы (1)


[Редактировать]

Возможно, это может быть полезно для определения количества объектов в хранилище.

   var count = GetEntitySetCount(myObjectContext.MetadataWorkspace);

   public static int GetEntitySetCount(MetadataWorkspace workspace)
   {
        var count = 0;

        // Get a collection of the entity containers from storage space.
        var containers = workspace.GetItems<EntityContainer>(DataSpace.SSpace);

        foreach(var container in containers)
        {
            //Console.WriteLine("EntityContainer Name: {0} ",
            //                  container.Name);

            foreach(var baseSet in container.BaseEntitySets)
            {
                if(baseSet is EntitySet)
                {
                    count++;

                    //Console.WriteLine(
                    //    "  EntitySet Name: {0} , EntityType Name: {1} ",
                    //    baseSet.Name, baseSet.ElementType.FullName);
                }
            }
        }

        return count;
    }

Чтобы получить количество таблиц в базе данных, вы можете сделать следующее в .Net 4.0.

myObjectContext.ExecuteStoreQuery<int>(
                "SELECT COUNT(*) from information_schema.tables WHERE table_type = 'base table'");

Использование .Net 3.5

var connection = ((EntityConnection)myObjectContext.Connection).StoreConnection as SqlConnection;

var cmd = new SqlCommand("SELECT COUNT(*) from information_schema.tables WHERE table_type = 'base table'", connection);

connection.Open();

var count = (int)cmd.ExecuteScalar();

connection.Close();
person Steven K.    schedule 30.12.2010
comment
он получает список таблиц из базы данных. Мне нужно получить весь список всех таблиц из модели. - person SKumar; 30.12.2010
comment
Если вы не используете базу данных для вещей, не связанных с EF, это будет count - 1 (для таблицы EdmMetadata) - person Steven K.; 30.12.2010
comment
Проблема в том, что я обновил базу данных, я удалил некоторые таблицы из базы данных. Но я не хочу обновлять модель, пока не узнаю, что количество таблиц как в базе данных, так и в EF не совпадает. Итак, мне нужно знать, как теперь подсчитать количество таблиц в EF. - person SKumar; 04.01.2011