如何使用nhibernate从存储过程返回一点

Ant*_*ain 3 c# nhibernate

我在我的项目中使用nHibernate但是我有一个存储过程,它只是返回成功或现在的boolen.

我如何在c#中编写代码?

我尝试了以下但它不喜欢因为我没有bool的映射!

{"No persister for:System.Boolean,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"}

IQuery query = NHibernateSession.CreateSQLQuery("EXEC MyDatabase.dbo.[ContentProvider_Import] :ContentProviderImportLogId", "success", typeof(bool))
                .SetInt32("ContentProviderImportLogId", log.Id);

            var test = query.UniqueResult<bool>();
Run Code Online (Sandbox Code Playgroud)

和相同的结果

IQuery query = NHibernateSession.CreateSQLQuery("EXEC MyDatabase.dbo.[ContentProvider_Import] :ContentProviderImportLogId")
                .AddEntity(typeof(bool))
                .SetInt32("ContentProviderImportLogId", log.Id);

            var test = query.UniqueResult<bool>();
Run Code Online (Sandbox Code Playgroud)

s1m*_*m0t 5

我会以稍微不同的方式处理这个问题,希望能为你解决这个问题.

我将更改我的存储过程以返回bool,如下所示:

declare @result bit
set @result = 1

select @result
Run Code Online (Sandbox Code Playgroud)

那么C#代码将是:

IQuery query = NHibernateSession.CreateSQLQuery("EXEC MyDatabase.dbo.[ContentProvider_Import] :ContentProviderImportLogId")
                .SetInt32("ContentProviderImportLogId", log.Id);

var test = query.UniqueResult<bool>();
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,如果您不想声明变量,则始终可以像这样转换 select 语句: SELECT CAST( 1 as BIT ) (2认同)