使用 Dapper.net 和 ServiceStack.OrmLite 从网格中保存数据
Save data from grid using Dapper.net and ServiceStack.OrmLite
我正在使用 datagridview 进行 CRUD 操作。
早些时候当我使用 ADO.net 和后来当我移动到 EF 我成功地提交了我想要的每一个命令.插入、更新或删除。
假设我想更新第一行,或者四行和十一行,如果我删除第二行怎么办,如果我需要添加一个新行怎么办。使用 datagridview 同时完成所有这些。
然后在所有这些修改之后我只需要调用 DA.Update(DS) 或在 EF SaveChanges 和我所有的数据将被保存。在前两种情况下,我完全可以做到!
前两个示例:ADO.NET 和 EF6
我是通过以下方式完成的:
ADO.NET:
Dim command As New SqlCommand
command = New SqlCommand(query, conn)
command.CommandTimeout = 200
ds = New DataSet
SQLDA = New SqlDataAdapter(command)
SQLDA.Fill(ds)
Dim cb As New SqlCommandBuilder(SQLDA)
Dim bs As New BindingSource
bs .DataSource = ds.Tables(0)
DGV.DataSource = bs
button_clik
SQLDA.UPDATE(ds) 'save all changes i have made
EF
db = New _Context
db.tPROMs.Load()
Dim b = db.tPROMs.Local.ToBindingList
b.AllowEdit = True
b.AllowNew = True
b.AllowRemove = True
Dim bs As New BindingSource
bs.DataSource = b
DGV.DataSource = bs
button_clik
db.SaveChanges() 'save all changes i have made
现在如何使用 DAPPER.NET 或 ServiceStack.OrmLite[=17 直接从网格中保存数据=]
到目前为止,我已经在 ADO.NET 和后来的 EF6 中完成了这项工作。但是为了更好的性能,我现在想使用 Dapper.net 或 ServiceStack.OrmLite.
DAPPER.NET
???????
ServiceStack.OrmLite
???????
我很难理解你的代码,但是插入的简洁语法应该是这样的:
using (var conn = new SqlConnection("YourConnString"))
{
return conn.Execute(query, instaceToInsert);
}
Dapper 会自动将模型中的属性映射到查询中的字段...
例如,如果您插入查询是:
INSERT INTO Users (LastName, FirstName) VALUES (@LastName, @FirstName)
那么您的模型需要类似于:
public class User
{
public string LastName { get; set; }
public string FirstName { get; set; }
}
然后用用户实例替换 instanceToInsert...
using (var conn = new SqlConnection("YourConnString"))
{
return conn.Execute(query, new User {LastName = "John", FirstName = "Doe"});
}
这里是 VB.NET 版本:
Using conn = New SqlConnection("YourConnString")
Return conn.Execute(query, instaceToInsert)
End Using
Public Class User
Public Property LastName() As String
Public Property FirstName() As String
End Class
Using conn = New SqlConnection("YourConnString")
Return conn.Execute(query, New User() With { .LastName = "John", .FirstName = "Doe"})
End Using
我正在使用 datagridview 进行 CRUD 操作。
早些时候当我使用 ADO.net 和后来当我移动到 EF 我成功地提交了我想要的每一个命令.插入、更新或删除。
假设我想更新第一行,或者四行和十一行,如果我删除第二行怎么办,如果我需要添加一个新行怎么办。使用 datagridview 同时完成所有这些。
然后在所有这些修改之后我只需要调用 DA.Update(DS) 或在 EF SaveChanges 和我所有的数据将被保存。在前两种情况下,我完全可以做到!
前两个示例:ADO.NET 和 EF6
我是通过以下方式完成的:
ADO.NET:
Dim command As New SqlCommand command = New SqlCommand(query, conn) command.CommandTimeout = 200 ds = New DataSet SQLDA = New SqlDataAdapter(command) SQLDA.Fill(ds) Dim cb As New SqlCommandBuilder(SQLDA) Dim bs As New BindingSource bs .DataSource = ds.Tables(0) DGV.DataSource = bs button_clik SQLDA.UPDATE(ds) 'save all changes i have made
EF
db = New _Context db.tPROMs.Load() Dim b = db.tPROMs.Local.ToBindingList b.AllowEdit = True b.AllowNew = True b.AllowRemove = True Dim bs As New BindingSource bs.DataSource = b DGV.DataSource = bs button_clik db.SaveChanges() 'save all changes i have made
现在如何使用 DAPPER.NET 或 ServiceStack.OrmLite[=17 直接从网格中保存数据=]
到目前为止,我已经在 ADO.NET 和后来的 EF6 中完成了这项工作。但是为了更好的性能,我现在想使用 Dapper.net 或 ServiceStack.OrmLite.
DAPPER.NET
???????
ServiceStack.OrmLite
???????
我很难理解你的代码,但是插入的简洁语法应该是这样的:
using (var conn = new SqlConnection("YourConnString"))
{
return conn.Execute(query, instaceToInsert);
}
Dapper 会自动将模型中的属性映射到查询中的字段...
例如,如果您插入查询是:
INSERT INTO Users (LastName, FirstName) VALUES (@LastName, @FirstName)
那么您的模型需要类似于:
public class User
{
public string LastName { get; set; }
public string FirstName { get; set; }
}
然后用用户实例替换 instanceToInsert...
using (var conn = new SqlConnection("YourConnString"))
{
return conn.Execute(query, new User {LastName = "John", FirstName = "Doe"});
}
这里是 VB.NET 版本:
Using conn = New SqlConnection("YourConnString")
Return conn.Execute(query, instaceToInsert)
End Using
Public Class User
Public Property LastName() As String
Public Property FirstName() As String
End Class
Using conn = New SqlConnection("YourConnString")
Return conn.Execute(query, New User() With { .LastName = "John", .FirstName = "Doe"})
End Using