使用 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

我是通过以下方式完成的:

  1. 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
    
  2. 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.NETServiceStack.OrmLite[=17 直接从网格中保存数据=]

到目前为止,我已经在 ADO.NET 和后来的 EF6 中完成了这项工作。但是为了更好的性能,我现在想使用 Dapper.net 或 ServiceStack.OrmLite.

  1. DAPPER.NET

            ???????  
    
  2. 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