Dapper.SimpleCRUD - ISNULL

c# dapper isnull nullable

문제

Dapper.SimpleCRUD를 사용하여 계층 구조에서 루트 노드를 검색하려고합니다. 루트 노드는 상위 노드가없는 것으로 식별됩니다. 이것은 내가하는 전화입니다.

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

그리고 이것은 생성 된 SQL입니다.

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

문제는 [ParentId] = @ParentId@ParentId 가 null @ParentId 레코드를 반환하지 [ParentId] = @ParentId 것입니다. 레코드를 일치 시키려면 문장이 [ParentId] IS NULL .

nullable 매개 변수가 NULL과 같고 IS NULL 문을 생성 할 수있는 경우 SimpleCRUD가 감지 할 수 있는지 궁금합니다. 이 같은:

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

나는 수동으로 WHERE 문자열을 보낼 수 있지만 자동화 된 SimpleCRUD 접근법을 기대하고 있음을 알고 있습니다.

나는 분명히 무언가를 놓치고 시간을내어 주셔서 감사합니다.

인기 답변

나는 이것을 좀 더 가깝게 보았고 실제로 시도 / 잡기에 있어야하는 것을 구현하는 아이디어를 좋아하지 않는다.

이 케이스의 방법을 어디에서 사용할 수 있습니까?

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

또는 귀하의 경우 :

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

ParentId가 null인지 여부에 따라 다른 where 절을 쉽게 생성 할 수 있습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.