我正在一个大型项目中,每个DbContext
下有50个以上的DbSet
和100个以上的DbContext
。
每个DbContext
都由一个单独的团队处理,他们正在根据自己的要求/更改添加/删除DbSet
。
从集中式视图/报告中,我想在父子视图中查看所有DbContext
类和每个DbSet
下的所有DbContext
,以管理数据库。
如何在LinQ查询或C#函数中获取所有DbContext
类和每个DbSet
下的所有DbContext
?
通过使用以下代码,我在DbContext
下获得了DbSet的列表,但就我而言,可能还会有新的DbContext
。
var metadata = ((IObjectContextAdapter)dbContext).ObjectContext.MetadataWorkspace;
var tables = metadata.GetItemCollection(DataSpace.SSpace)
.GetItems<EntityContainer>()
.Single()
.BaseEntitySets
.OfType<EntitySet>()
.Where(s => !s.MetadataProperties.Contains("Type")
|| s.MetadataProperties["Type"].ToString() == "Tables");
foreach (var table in tables)
{
var tableName = table.MetadataProperties.Contains("Table")
&& table.MetadataProperties["Table"].Value != null
? table.MetadataProperties["Table"].Value.ToString()
: table.Name;
var tableSchema = table.MetadataProperties["Schema"].Value.ToString();
Console.WriteLine(tableSchema + "." + tableName);
}
所以我正在寻找一个动态列表,其中也应该包括新的DbContext。
如何在LinQ查询或c#函数中获取每个DbContex下的所有DbContext类和所有DbSet。