为什么我的计数行的原始查询总是返回-1?

时间:2014-06-05 06:55:30

标签: c# sql entity-framework

我正在尝试检查表是否存在,但无法正常工作。

由于某种原因,count始终返回-1。我已经在数据库中有一个表。它 应该返回1?

SearchEntities db = new SearchEntities();

var qry3 = "";
var sql4 = "SELECT Count(*) FROM SearchDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'portland'";
var count = db.Database.ExecuteSqlCommand(sql4);

2 个答案:

答案 0 :(得分:9)

ExecuteSqlCommand不返回数据,它始终返回带有返回码的int

您想要SqlQuery<TElement>(string sql, params Object[] parameters)

var count = db.Database.SqlQuery<int>(sql4).Single();

答案 1 :(得分:1)

ExecuteStoreQuery直接执行针对数据源的命令。

int result = entity.ExecuteStoreQuery<int>(@"
IF EXISTS (SELECT * FROM sys.tables WHERE name = 'TableName') 
    SELECT 1
ELSE
    SELECT 0
").SingleOrDefault();

请参阅答案here