【发布时间】:2016-10-26 06:38:13
【问题描述】:
我将 Dapper 用于我的 Windows C# 表单应用程序。我注意到他们的大多数 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); 一样简单?
【问题讨论】:
-
是的,我知道 Query 和 Execute 函数,我正在寻找的是让 Insert 和 Update 像 GetList(ClassName) 和 Get(class) 一样简单。
-
@RahulMakwana 您需要编写自己的包装器才能做到这一点。据我了解,编写 Dapper 的人按照我在下面回答的方式进行操作,以使事情保持开放。很多时候,代码只需要更新特定的列,所以传递一个对象会假设你想要更新所有的列,这是更新的一个很大的假设。就目前而言,它是相当精确的代码。
-
?@BenHoffman 我明白这一点,如果我每次更新时都可以更新所有列怎么办。我想你是对的,我需要编写自己的辅助扩展来做到这一点。
-
你看过 dapper.contrib 吗?它添加了一些 CRUD 功能...