2015-01-09 3 views
2

Я пытаюсь запустить некоторый код ASP.NET на моем веб-сервере, на котором установлены Mono 3.10.0 и ASP.NET версии 4.0.30319.17020.Почему Database.Query() возвращает null, когда пуст?

Код в вопросе заключается в следующем:

var db = Database.Open("myMySQLdatabase"); 
var q1 = db.Query(@"SELECT id FROM ph_conditions WHERE conditionName = '"+newCondName+"'"); 
if(q1==null || q1.Count() == 0){ 
    // 
} 

Когда db.Query() выполняется, и если нет совпадения в моей базе данных, она возвращает «нулевой», вместо того, что я бы ожидать , который является IEnumerable список размера 0. Почему это так?

Если есть совпадения, значит, он ведет себя так, как ожидалось.

Прямо сейчас, чтобы обойти это нулевые ошибки, я включаю проверку, чтобы проверить, является ли запрос нулевым или нет, но он должен всегда возвращать какой-либо список, даже если он пуст, правильно?

+1

Что такое 'Database.Query'? Это не EF и не дозвуковой, не так ли? Возможно, это именно то, что делает ваша инфраструктура. – t3chb0t

+0

Это метод из пространства имен [WebMatrix.Data] (http://msdn.microsoft.com/en-us/library/webmatrix.data.database.query%28v=vs.111%29.aspx). – uneatenbreakfast

ответ

2

По-видимому, WebMatrix.Data, которая поставляется вместе с Mono 3.10.0, совсем не похожа на аналогию с Windows, в которой она возвращает «null», если запрос не имеет результатов.

Так, чтобы исправить это, я добавил строку в Database.cs вернуть пустой список и перекомпилировал WebMatrix.Data.dll

Смежные вопросы