首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dapper NullReferenceException

Dapper NullReferenceException
EN

Stack Overflow用户
提问于 2015-09-25 04:48:49
回答 3查看 2K关注 0票数 2

当我执行以下代码时,我得到了一个NullReferenceException:

代码语言:javascript
复制
var insertTransaction = @"INSERT INTO [192.168.1.55].databaseName.dbo.tableName
(Date, Desc) 
VALUES(GETDATE(), 
@Description)
SELECT Scope_identity()";

var result = _sqlMapper.Query<int>(insertTransaction,
             new
             {                           
                 Description = "some description"
             });

其中_sqlMapper是Dapper.SqlMapper的一个实例

如果我删除了SELECT Scope_identity(),我就不会得到异常。

异常堆栈跟踪显示异常在这里抛出:

在d中的Dapper.SqlMapper.d__11`1.MoveNext():\Dev\Dapper-net\Dapper NET40\SqlMapper.cs:line 1583

  1. 为什么SELECT Scope_identity()要创建一个空对象,我如何修复它?
  2. 为什么堆栈跟踪显示我的本地机器上不存在的文件路径?

更新: Dapper版本= 1.40.0.0,运行时版本= v4.0.30319 DLL = C:\src\packages\Dapper.1.40\lib\net45\Dapper.dll

UPDATE:如果我在Management中执行查询,将插入行,但是返回的scope_identity为null。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-25 05:33:05

Scope_identity不会在远程/链接服务器上工作。有关解决方案,请参见以下答案:Best way to get identity of inserted row in Linked server?

我最喜欢的方法:

代码语言:javascript
复制
 SELECT *
 FROM OPENQUERY(server, '
     INSERT INTO database.schema.table (columns) VALUES (values);
     SELECT SCOPE_IDENTITY() AS ID');

还请注意,SCOPE_IDENTITY()给出的是十进制,而不是整数。Dapper.SqlMapper.Query将返回一个IEnumerable,从1.28开始有一个ExecuteScalar方法。

如果这对你有帮助的话,记得把答案投在链接中。

票数 6
EN

Stack Overflow用户

发布于 2015-09-25 07:55:27

您可以使用dapper和Management获得异常,这是因为两者在相同的范围内。当您使用SELECT SCOPE_IDENTITY()时,有两个语句在相同的作用域中,因此您总是得到NullReferenceException

如果您用分号分隔SQL语句,那么它应该可以工作。

代码语言:javascript
复制
var insertTransaction = @"INSERT INTO [192.168.1.55].databaseName.dbo.tableName
(Date, Desc) 
VALUES(GETDATE(), 
@Description);
SELECT Scope_identity()";
票数 0
EN

Stack Overflow用户

发布于 2019-04-22 18:53:44

您可能会得到一个NullReferenceException,以防连接字符串为空或空.

这种情况发生在我身上,因为在等待调用之后,连接字符串在我重用等待之前使用的相同连接之前被清除。因此,在本例中,我必须在需要查询数据库的地方创建另一个连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32774993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档