我需要获取实体数据框架中所有表的列表。
我知道在 Linq2SQL 中我们可以使用这样的东西。var dataContext = new DataContext(); var dataContextTableNames = (从 dataContext.Mapping.GetTables() 中的表中选择 tables.TableName).ToList();
但是,我需要获取实体数据框架中所有表的列表。有任何解决方法可以在实体数据框架中获得类似的列表。
提前致谢。
我需要获取实体数据框架中所有表的列表。
我知道在 Linq2SQL 中我们可以使用这样的东西。var dataContext = new DataContext(); var dataContextTableNames = (从 dataContext.Mapping.GetTables() 中的表中选择 tables.TableName).ToList();
但是,我需要获取实体数据框架中所有表的列表。有任何解决方法可以在实体数据框架中获得类似的列表。
提前致谢。
[编辑]
也许这可以用于查找存储空间中的对象数量
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();