- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用结构作为 Dapper 中的参数查询。它对我不起作用。但好像it should work .
一个失败的例子:
struct Simple { public int ID; }
[TestMethod]
public void StructParameter()
{
int result = Db.Query<int>("select [ID] = @ID", new Simple { ID = 123 }).First();
result.Should().Be(123);
}
一个工作示例:
[TestMethod]
public void AnonymousParameter()
{
int result = Db.Query<int>("select [ID] = @ID", new { ID = 123 }).First();
result.Should().Be(123);
}
第一种情况抛出的错误:
System.Data.SqlClient.SqlException: Must declare the scalar variable "@ID".
Result StackTrace:
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at Dapper.SqlMapper.<QueryImpl>d__11`1.MoveNext() in d:\Dev\dapper-dot-net\Dapper NET40\SqlMapper.cs:line 1553
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in d:\Dev\dapper-dot-net\Dapper NET40\SqlMapper.cs:line 1443
...
我使用的是 Dapper 1.38 版。
根据 Dirk 的建议,使用属性而不是归档就可以了:
struct Simple {
public int ID { get; set; }
}
最佳答案
问题不是使用结构引起的,而是使用字段而不是属性引起的。
如果您将 struct Simple
更改为 class Simple
仍然行不通,因为参数读取器仅创建 IL 代码来读取属性。
将 ID
字段更改为属性即可解决。
关于c# - 小巧玲珑.NET : problems with struct parameterized queries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140539/
下面使用Dapper抛出Incorrect syntax near ','。 const string sql = "select * from ZipToZipDistance z wher
我应该如何将 IDbConnection 和 IDbTransaction 与 Dapper 一起使用? 目前我只使用 IDbConnection 。如下: using (SqlConnection
这似乎是一种奇怪的行为,但以下代码会引发错误: public async Task RebuildIndex(string tableName, string indexName) { awa
在 MVC 3 项目中,我使用 EF4、IoC 和 Agatha-RRSL 作为我的服务层。 幸运的是,这周我找到了 Dapper,我将从 EF4 迁移到 Dapper! 通常我会在我的 Agatha
我今天设法启动并运行了一些小型沙箱/POC 项目,但似乎在一个问题上让我头疼...... 问题: Is there a way to get dapper to map to SQL column n
我的读者从存储过程中读取内容它的第一个选择语句之一是 select id , name from FSubsystem 从 10 个中选择 staments 然后我声明了如下字典Dictionary
我正在使用 dapper.net 并且我已经为我的 Delete 和 Update 语句包装了 connection.Execute。 public virtual void Update(TEnti
我的数据库是甲骨文。我使用 Dapper 1.13,它抛出一个异常说 Error parsing column 3 (LATITUDE=39.2330 - Decimal)。 LATITUDE 是我实
我正在使用 Dapper.NET,当我执行下一段代码时: using (SqlConnection con = new SqlConnection(connectionString))
我正在尝试使用结构作为 Dapper 中的参数查询。它对我不起作用。但好像it should work . 一个失败的例子: struct Simple { public int ID; } [Tes
我在 C# 中使用 Dapper,后端是 MS Access。我的 DAL 方法在数据库中插入记录。我想返回插入行的唯一标识符(或更新的具有唯一标识符的 POCO)。我期待我的功能如下(我知道这不起作
我看到了使用 Dapper 执行带有动态参数的存储过程并返回过程结果的示例。通常,示例使用 .Execute,但其中一些使用 .Query。我在使用 .Execute 时遇到困难。在上述情况下我应该使
实际上我有一个查询,它返回的结果包含 varchar 类型的列(对于 ex.Address),但是该表的域模型包含对象类型的属性(对于 ex.Address 地址)。因为它会出现错误,它说无法将字符串
我使用 Dapper 的 DynamicParamters 对象和模板参数来生成我的实体的参数。在调用我的存储过程后,出现以下错误“过程或函数 sp_MemberSave 指定的参数太多。”。我的一些
我有一个包含地址对象的公司。 SQL 返回是平坦的,我正在尝试让 Query<> 加载所有对象。 cnn.Query("Sproc", (org,mail,ph
我需要将项目集合传递给存储过程。存储过程将它们插入到多个表中。我使用声明的自定义用户类型的表值参数。 TVP 类型: CREATE TYPE [dbo].[Type1] AS TABLE (
我是一名优秀的程序员,十分优秀!