我使用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
直接从网格中保存数据到目前为止,我已经通过ADO.NET和以后的EF6完成了这项工作。但是为了获得更好的性能,我想要使用Dapper.net或ServiceStack.OrmLite。
DAPPER.NET
???????
ServiceStack.OrmLite
???????
答案 0 :(得分:1)
我很难跟踪你的代码,但插入的dapper语法应该是这样的:
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替换为user ...
的实例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