C# 如何使用实体框架获取数据库表的计数?

C# 如何使用实体框架获取数据库表的计数?,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我看过关于MetadataWorkspace的帖子,但没有关于此任务的示例。我想让我的代码检测数据库是否添加了一个新表,因此我将DB中的表数与2个已知表列表进行比较。表可以是用户数据或系统数据,我想删除用户表中的所有数据 如果发现新表,代码将要求用户定义它是否包含系统数据或用户数据。这应该是正确的。以下是为您准备的相关部分: var metadata = ((IObjectContextAdapter)db).ObjectContext.MetadataWorkspace; var t

我看过关于MetadataWorkspace的帖子,但没有关于此任务的示例。我想让我的代码检测数据库是否添加了一个新表,因此我将DB中的表数与2个已知表列表进行比较。表可以是用户数据或系统数据,我想删除用户表中的所有数据

如果发现新表,代码将要求用户定义它是否包含系统数据或用户数据。

这应该是正确的。以下是为您准备的相关部分:

var metadata = ((IObjectContextAdapter)db).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");
var metadata=((IObjectContextAdapter)db).ObjectContext.MetadataWorkspace;
var tables=metadata.GetItemCollection(DataSpace.SSpace)
.GetItems()
.Single()
.BaseEntitySets
第()类
.Where(s=>!s.MetadataProperties.Contains(“类型”)
||s.MetadataProperties[“Type”].ToString()=“Tables”);
这应该是。以下是为您准备的相关部分:

var metadata = ((IObjectContextAdapter)db).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");
var metadata=((IObjectContextAdapter)db).ObjectContext.MetadataWorkspace;
var tables=metadata.GetItemCollection(DataSpace.SSpace)
.GetItems()
.Single()
.BaseEntitySets
第()类
.Where(s=>!s.MetadataProperties.Contains(“类型”)
||s.MetadataProperties[“Type”].ToString()=“Tables”);
这应该是。以下是为您准备的相关部分:

var metadata = ((IObjectContextAdapter)db).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");
var metadata=((IObjectContextAdapter)db).ObjectContext.MetadataWorkspace;
var tables=metadata.GetItemCollection(DataSpace.SSpace)
.GetItems()
.Single()
.BaseEntitySets
第()类
.Where(s=>!s.MetadataProperties.Contains(“类型”)
||s.MetadataProperties[“Type”].ToString()=“Tables”);
这应该是。以下是为您准备的相关部分:

var metadata = ((IObjectContextAdapter)db).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");
var metadata=((IObjectContextAdapter)db).ObjectContext.MetadataWorkspace;
var tables=metadata.GetItemCollection(DataSpace.SSpace)
.GetItems()
.Single()
.BaseEntitySets
第()类
.Where(s=>!s.MetadataProperties.Contains(“类型”)
||s.MetadataProperties[“Type”].ToString()=“Tables”);

太棒了!有趣的是,它没有返回_MigrationHistory,但这没关系。@BrianLeeming我认为这是因为这部分代码查询EF模型。看看那篇文章中的“数据库怎么样?”。这一部分可能会让你了解迁移历史太棒了!有趣的是,它没有返回_MigrationHistory,但这没关系。@BrianLeeming我认为这是因为这部分代码查询EF模型。看看那篇文章中的“数据库怎么样?”。这一部分可能会让你了解迁移历史太棒了!有趣的是,它没有返回_MigrationHistory,但这没关系。@BrianLeeming我认为这是因为这部分代码查询EF模型。看看那篇文章中的“数据库怎么样?”。这一部分可能会让你了解迁移历史太棒了!有趣的是,它没有返回_MigrationHistory,但这没关系。@BrianLeeming我认为这是因为这部分代码查询EF模型。看看那篇文章中的“数据库怎么样?”。这部分可能会让你了解迁移历史