Проверьте, есть ли в какой-либо таблице базы данных какие-либо строки - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь понять, как проверить, содержит ли какая-либо таблица в моей БД данные с использованием Entity Framework. Я могу проверить одну таблицу, но как я могу проверить все таблицы одновременно? У нас есть какой-нибудь вариант с ef6?

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

Любые указатели о том, как проходить по сущностям, будут полезны.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Аналогично @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]
0 голосов
/ 28 июня 2018

Вот один из способов сделать это с помощью t-sql. Это должно быть молниеносно на большинстве систем. Это вернулось менее чем за секунду в нашей базе данных ERP. В более чем 15 000 статистических данных о разделах указано 421 млрд строк.

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.
...