Dapper simplecrud的使用

  为了方便Dapper操作可以使用Dapper的相关扩展dapper simplecrud。

  1.首先点击管理NuGet

2.在管理页面中搜索 Dapper.SimpleCRUD并安装

然后就可以使用该包下的扩展

经过好久的寻找找到该文章,随便吐槽一下百度真的十分坑爹,找的无用信息太多

https://github.com/ericdc1/Dapper.SimpleCRUD/

为了方便以后查找故对方法进行总结


以下是对方法使用的总结

1.Get方法

public static T Get<T>(this IDbConnection connection, int id)

 首先建立和表相对应的实体类

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

然后查询至实体

var user = connection.Get<User>(1);  

相当于sql:

Select Id, Name, Age from [User] where Id = 1 

下面我们对实体类进行一下相关改动

[Table("Users")]//真实表名
    public class User
    {
        [Key]
        public int UserId { get; set; }
        [Column("strFirstName"]  //真实列名
        public string FirstName { get; set; }//列别名
        public string LastName { get; set; }
        public int Age { get; set; }
    }

    var user = connection.Get<User>(1);  

改动后该查询相当于sql

Select UserId, strFirstName as FirstName, LastName, Age from [Users] where UserId = @UserID

2.GetList方法

public static IEnumerable<T> GetList<T>(this IDbConnection connection)

实体:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

查询全部

var user = connection.GetList<User>();  

相当于Sql

Select * from [User]

使用条件实体查询

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

var user = connection.GetList<User>(new { Age = 10 });  

相当于SQL

Select * from [User] where Age = @Age

使用字符串条件查询

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

var user = connection.GetList<User>("where age = 10 or Name like '%Smith%'");  

相当于SQL

Select * from [User] where age = 10 or Name like '%Smith%'

分页查询:

public static IEnumerable<T> GetListPaged<T>(this IDbConnection connection, int pageNumber, int rowsPerPage, string conditions, string orderby)
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

var user = connection.GetListPaged<User>(1,10,"where age = 10 or Name like '%Smith%'","Name desc");  

相当于SQl:SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY Name desc) AS PagedNumber, Id, Name, Age FROM [User] where age = 10 or Name like '%Smith%') AS u WHERE PagedNUMBER BETWEEN ((1 - 1) * 10 + 1) AND (1 * 10)


插入方法

public static int Insert(this IDbConnection connection, object entityToInsert)

[Table(
"Users")] public class User { [Key] public int UserId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } //Additional properties not in database [Editable(false)] public string FullName { get { return string.Format("{0} {1}", FirstName, LastName); } } public List<User> Friends { get; set; } [ReadOnly(true)] public DateTime CreatedDate { get; set; } } var newId = connection.Insert(new User { FirstName = "User", LastName = "Person", Age = 10 });

相当于SQL
Insert into [Users] (FirstName, LastName, Age) VALUES (@FirstName, @LastName, @Age)

 

更新方法

[Table("Users")]
public class User
{
   [Key]
   public int UserId { get; set; }
   [Column("strFirstName")]
   public string FirstName { get; set; }
   public string LastName { get; set; }
   public int Age { get; set; }

   //Additional properties not in database
   [Editable(false)]
   public string FullName { get { return string.Format("{0} {1}", FirstName, LastName); } }
   public List<User> Friends { get; set; }
}
connection.Update(entity);

相当于SQL
Update [Users] Set (strFirstName=@FirstName, LastName=@LastName, Age=@Age) Where ID = @ID

删除方法

public static int Delete<T>(this IDbConnection connection, int Id)

public class User
{
   public int Id { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
   public int Age { get; set; }
}
connection.Delete<User>(newid);

或

public static int Delete<T>(this IDbConnection connection, T entityToDelete)

public class User
{
   public int Id { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
   public int Age { get; set; }
}

connection.Delete(entity);
相当于SQl
Delete From [User] Where ID = @ID

 

删除多条

1.根据实体删除
public static int DeleteList<T>(this IDbConnection connection, object whereConditions, IDbTransaction transaction = null, int? commandTimeout = null)

connection.DeleteList<User>(new { Age = 10 });

2.根据条件删除
public static int RecordCount<T>(this IDbConnection connection, string conditions = "")

connection.DeleteList<User>("Where age > 20");

统计条数

public static int RecordCount<T>(this IDbConnection connection, string conditions = "")

var count = connection.RecordCount<User>("Where age > 20");

 

转载于:https://www.cnblogs.com/yzxblog/p/5363360.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dapper 是一个轻量级的 ORM 框架,使用起来非常简单。下面是一个使用 Dapper 查询数据的示例: 1. 首先,需要在项目中引入 Dapper 库。可以通过 NuGet 包管理器安装 Dapper。 2. 然后,在代码中使用以下语句引入 Dapper 命名空间: ```csharp using Dapper; ``` 3. 接下来,可以使用 Dapper 提供的 `SqlConnection` 类来连接数据库。例如: ```csharp var connectionString = "Data Source=myserver;Initial Catalog=mydatabase;User ID=myusername;Password=mypassword;"; using (var connection = new SqlConnection(connectionString)) { // ... } ``` 4. 在 `SqlConnection` 对象中,可以使用 `Query` 方法来执行查询操作。例如: ```csharp var sql = "SELECT * FROM Customers WHERE Country = @Country"; var customers = connection.Query<Customer>(sql, new { Country = "USA" }); ``` 上面的代码将查询所有国家为 USA 的客户,并将结果映射到 `Customer` 类型的对象列表中。 在查询语句中,可以使用命名参数来传递参数。Dapper 会自动将参数转换为 SQL 参数,从而防止 SQL 注入攻击。 5. 可以使用 `Execute` 方法来执行更新、插入和删除操作。例如: ```csharp var sql = "UPDATE Customers SET Name = @Name WHERE Id = @Id"; var affectedRows = connection.Execute(sql, new { Id = 1, Name = "John" }); ``` 上面的代码将更新 Id 为 1 的客户的名称为 John。 这只是 Dapper 的一些基本用法,Dapper 还提供了许多其他功能,如事务处理、存储过程调用等。需要了解更多信息,请查看 Dapper 的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值