【发布时间】:2018-11-28 09:59:17
【问题描述】:
我正在尝试使用 Dapper 对本地计算机上可用的数据库执行一些简单的查询。
大多数查询工作正常,但是当我尝试将一个对象插入到数据库中相应的表中时,我得到一个SqlException。我有一个类似的插入方法,它首先在方法主体中实例化一个对象并将其插入到数据库中,并且该方法工作正常。但是这个没有。更具体地说,这是异常的响应:
System.Data.SqlClient.SqlException: 'Must declare the scalar variable "@VersionId".'
这里是产生异常的调用代码:
public int CreateNewSchema(Schema schema)
{
string sql = "INSERT INTO Schemas(VersionId, Created, Updated, SchemaData) " +
" values (@VersionId, @Created, @Updated, @SchemaData);";
var affectedRows = _connection.Execute(sql, new{schema});
return affectedRows;
}
我的数据库中对应的Schema表有如下设计。
Schema
ID int
VersionID nvarchar(max)
Created datetime2(7)
Updated datetime2(7)
SchemaData nvarchar(max)
最后,我尝试插入该表的 POCO 对象定义如下:
public class Schema
{
public int ID { get; set; }
public string VersionId { get; set; }
public DateTime Created { get; set; }
public DateTime Updated { get; set; }
public string SchemaData { get; set; }
}
【问题讨论】:
-
VersionID != VersionId 是这个问题吗?
-
@GeertBellekens 和 SQL 和 Dapper 都不在乎。这不是问题
-
拼写错误,表中列
VersionId与其他声明匹配。 -
@VDWWD 不相关。这是一个关于 Dapper 的问题,它使用反射来提取参数名称和值。