代码之家  ›  专栏  ›  技术社区  ›  Kurkula

检查数据库表是否有行

  •  0
  • Kurkula  · 技术社区  · 8 年前

    我试图理解如何使用实体框架检查数据库中的任何表是否有数据。我可以检查一张桌子,但如何一次检查所有桌子?我们有ef6的选择吗?

    using (var db = new CreateDbContext())
    {
        if(!db.FirstTable.Any())
        {
            // The table is empty
        }
    }
    

    2 回复  |  直到 8 年前
        1
  •  4
  •   Sean Lange    8 年前

    这里有一种方法可以用t-sql实现这一点。在大多数系统上这应该是闪电般的快。在不到一秒钟的时间内,我们的ERP数据库就返回了这个结果。它在15000多个分区统计中记录了4210亿行。

    select sum(p.row_count)
    from sys.dm_db_partition_stats p
    join sys.objects o on o.object_id = p.object_id
    where o.type not in ('S', 'IT') --excludes system and internal tables.
    
        2
  •  2
  •   George Mastros    8 年前

    类似于@SeanLange,但显示没有任何行的表的模式名和表名。

    SELECT  Distinct OBJECT_SCHEMA_NAME(p.object_id) AS [Schema], 
            OBJECT_NAME(p.object_id) AS [Table]
    FROM    sys.partitions p
            INNER JOIN sys.indexes i 
                ON p.object_id = i.object_id
                AND p.index_id = i.index_id
    WHERE   OBJECT_SCHEMA_NAME(p.object_id) != 'sys'
            And p.Rows = 0    
    ORDER BY [Schema], [Table]