gpt4 book ai didi

c# - Dapper 的参数化更新和插入?

转载 作者:太空狗 更新时间:2023-10-30 00:49:27 26 4
gpt4 key购买 nike

我正在为我的 Windows C# 窗体应用程序使用 Dapper。我注意到他们的大多数 CRUD 操作都将类名作为参数。例如下面两个表:

    "Employee" Table
Column Name | Data Type |
-------------------------
EmpName | string |
EmpNo | string |
--------------------------

Employee.cs
[Table("Employee")]
public class Employee
{
[Key]
public string EmpNo {get;set;}
public string EmpName {get;set;}
}

"User" Table
Column Name | Data Type |
-------------------------
UserName | string |
UserNo | string |
--------------------------
User.cs
[Table("User")]
public class User
{
[Key]
public string UserNo {get;set;}
public string UserName {get;set;}
}


eg. var users= connection.Query<User>("select * from User" );
var employees = connnection.GetList<Employee>();

将执行相应的任务。但是,据我所知connection.Insert<User>(user); or connection.Update<Employee>(emp);不存在。如果我错了,请纠正我,是否有任何解决方法可以让 dapper 知道类类型来进行更新和插入?我很清楚 Query()Execute() ,事实上我现在正在使用这些。有没有可能让它像GetList(ClassName);一样简单是吗?

最佳答案

Dapper 处理事情的方式与您所要求的稍有不同。没有 Insert 或 Update 方法。相反,你会想像这样插入:

var p = new Product { Name = "Sam", Description = "Developer" };
p.Id = cnn.Query<int>(@"insert Products(Name,Description)
values (@Name,@Description)
select cast(scope_identity() as int)", p).First();

这直接来自 Sam Saffron,https://samsaffron.com/archive/2012/01/16/that-annoying-insert-problem-getting-data-into-the-db-using-dapper .

对于更新,您需要这样的代码:

public bool Update(Employee employee)
{
string query = "UPDATE EMPLOYEE SET NAME = @Name WHERE Id = @Id";
var count = this.db.Execute(query, employee);
return count > 0;
}

关于c# - Dapper 的参数化更新和插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37999899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com