Как да получите Списък на всички таблици в рамката на данни на Entity?

Трябва да получа списъка с всички таблици в Entity Data Framework.

Знам, че в Linq2SQL можем да използваме нещо подобно. var dataContext = нов DataContext(); var dataContextTableNames = (от таблици в dataContext.Mapping.GetTables() изберете tables.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
той получава списъка с таблици от базата данни. Трябва да взема всички lsit на всички таблици от модела. - person SKumar; 30.12.2010
comment
Освен ако не използвате базата данни за неща, които не са свързани с EF, това ще бъде брой - 1 (за таблицата EdmMetadata) - person Steven K.; 30.12.2010
comment
Проблемът е, че актуализирах базата данни, изтрих някои таблици от базата данни. Но не желая да актуализирам модела, докато не разбера, че броят на таблиците в базата данни и EF не е еднакъв. И така, трябва да знам как да преброя броя на таблиците в EF сега. - person SKumar; 04.01.2011