Как получить Список всех таблиц в структуре данных Entity? - PullRequest
1 голос
/ 29 декабря 2010

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

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

Но мне нужно получить список всех таблиц в Entity Data Framework.Есть какой-нибудь способ получить подобный список в Entity Data Framework.

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

1 Ответ

1 голос
/ 30 декабря 2010

[Изменить]

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

   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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...