使用Dapper.net和ServiceStack.OrmLite从网格中保存数据

时间:2015-03-25 20:00:44

标签: vb.net servicestack dapper

我使用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
    
  3. 现在我如何使用 DAPPER.NET ServiceStack.OrmLite

    直接从网格中保存数据

    到目前为止,我已经通过ADO.NET和以后的EF6完成了这项工作。但是为了获得更好的性能,我想要使用Dapper.net或ServiceStack.OrmLite。

    1. DAPPER.NET

              ???????  
      
    2. ServiceStack.OrmLite

              ???????
      
    3. My question

1 个答案:

答案 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