Dapper.SimpleCRUD - ISNULL

c# dapper isnull nullable

Pregunta

Estoy tratando de recuperar el nodo raíz en una jerarquía usando Dapper.SimpleCRUD. El nodo raíz se identifica al no tener un nodo primario. Esta es la llamada que estoy haciendo:

var whereConditions = new object { ParentId = (int?)null, CompanyId = 1 };
var root = db.GetList<T>(whereConditions).FirstOrDefault();

Y este es el SQL que se genera:

exec sp_executesql N'Select * from [Folders] where [CompanyId] = @CompanyId and [ParentId] = @ParentId',N'@CompanyId int,@ParentId int',@CompanyId=13,@ParentId=NULL

El problema es que [ParentId] = @ParentId no devolverá ningún registro ya que @ParentId es nulo. Para hacer coincidir un registro, la declaración debería ser [ParentId] IS NULL .

Me pregunto si SimpleCRUD puede detectar cuándo un parámetro que admite nulos es igual a NULL y puede generar una declaración IS NULL . Algo como esto:

exec sp_executesql N'Select * from [Folders] where [CompanyId] = @CompanyId and [ParentId] IS NULL',N'@CompanyId int,@ParentId int',@CompanyId=13,@ParentId=NULL

Sé que puedo enviar la cadena WHERE de forma manual, pero esperaba un enfoque automatizado de SimpleCRUD.

Disculpas de antemano si me he perdido algo obvio y gracias por su tiempo.

Respuesta popular

Miré esto un poco más cerca y realmente no me gusta la idea de implementar algo que tiene que ser un try / catch para trabajar.

¿Podrías usar el manual donde el método para este caso?

var user = connection.GetList("where age = 10 or Name like '%Smith%'");

o en tu caso:

var user = connection.GetList("where ParentId is null AND CompanyId = 1");

Podrías generar fácilmente una cláusula where diferente dependiendo de si ParentId es nulo.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué