我使用.NET6和Package Dapper/2.1.15. 我有一个简单的例子

create table Test (a int, b varchar(10));

在C#中:

public class Test
{
    public int a { get; set; }
    public string b { get; set; }    
}

var insertStmt = @"insert into Test(a,b) values (@a, @b)";

var test = new Test {a = 1, b = "some value" };

connection.Execute(insertStmt,
            new
            {
                test
            });

我总是收到错误消息:

System.Data.SqlClient.SqlException (0x80131904): Must declare the scalar variable "@a".

但是根据一些例子,Dapper应该"理解",@a,@b在"测试"中.

当然,我可以逐一列出属性

connection.Execute(insertStmt,
            new
            {
                test.a,
                test.b
            });

但功能应该会起作用. 如果我有一组测试对象,它应该如何工作?

推荐答案

这应该是可行的:

var test = new Test {a = 1, b = "some value" };

connection.Execute(insertStmt, test);

Csharp相关问答推荐

在Dapper中使用IasyncEum重写GetAsyncEum方法

在依赖性注入和继承之间进行 Select

向类注入一个工厂来创建一些资源是一个好的实践吗?

应该使用哪一个?"_counter += 1 OR互锁增量(ref_counter)"""

解析需要HttpClient和字符串的服务

"virtual"修饰符对接口成员有什么影响?

C++/C#HostFXR通过std::tuple传递参数

发布用于Linux Ubuntu的C#应用程序

mocking对象的引发事件并作为用于调用方法的参数对象传递到那里

应用程序重新启动后,EFCore列表的BSON反序列化错误

我想在文本框悬停时在其底部显示一条线

EF核心区分大小写的主键

是否可以将Collectionview中的数组与ObservableCollection绑定?

等待一个等待函数

我可以查看我们向应用程序洞察发送了多少数据吗?

在C#中有没有办法减少大型数组中新字符串的分配?

.NET8Blazor-为什么Rapzor渲染在for循环之后显示?

SqlException:无法打开数据库.升级到Dotnet 8后-数据库兼容性版本-非EFCore兼容性级别

我是否以错误的方式使用了异步延迟初始化?

在Blazor中动态隐藏MUD文本