我正在尝试了解如何使用实体框架检查数据库中是否有任何表具有数据。我可以检查一个表,但如何一次检查所有表?我们对 ef6 有什么选择吗?
using (var db = new CreateDbContext())
{
if(!db.FirstTable.Any())
{
// The table is empty
}
}
任何关于如何遍历实体的指针都会有所帮助。
这是使用t-sql 执行此操作的一种方法。在大多数系统上,这应该是闪电般的快。这在我们的ERP数据库不到一秒钟的时间内返回。它在超过 15,000 个分区统计信息中表示 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.
与@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]