设为首页 加入收藏

TOP

C#的dapper使用(二)
2019-09-01 23:43:53 】 浏览:39
Tags:dapper 使用
SqlConnection(connectionString)) { var sql = "select * from Person where id in @ids"; //参数类型是Array的时候,dappper会自动将其转化 return connection.Query<Person>(sql, new { ids = new int[2] { 1, 2 }, }).ToList(); } } public static List<Person> QueryIn(int[] ids) { using (IDbConnection connection = new SqlConnection(connectionString)) { var sql = "select * from Person where id in @ids"; //参数类型是Array的时候,dappper会自动将其转化 return connection.Query<Person>(sql, new { ids }).ToList(); } }

多语句操作

为此我们引入以下Book类,同样在数据库里设置这个表。

public class Book
{
    public int ID { get; set; }
    public int PersonID { get; set; }
    public string BookName { get; set; }
}
/// <summary>
/// 多语句操作
/// </summary>
public static void QueryMultiple()
{
    using (IDbConnection connection = new SqlConnection(connectionString))
    {
        var sql = "select * from Person; select * from Book";
        var multiReader = connection.QueryMultiple(sql);
        var personList = multiReader.Read<Person>();
        var bookList = multiReader.Read<Book>();
        multiReader.Dispose();
    }
}

Join操作

我们是面向对象编程,所以一个对象里面会有许多其他子对象,这个子对象里面又有其自己的子对象,这种关系在数据库里的表示就是外键。
比如我们有一本书book,它有主人person,book是一个对象,主人又是一个对象。

public class BookWithPerson
{
    public int ID { get; set; }
    public Person Pers { get; set; }
    public string BookName { get; set; }
}
我们自然想要一个方法把数据库里复杂的外键关系转成我们需要的对象BookWithPerson,所有我们需要的信息都存在里面,取数据的时候只要找这个对象取数据就行了,比如我们需要一本书的主人的姓名,我们只需要bookWithPerson.Pers.Name。如果是一对多的关系我们用数组,如果是多对多我们加一层mapping。
现在我们想根据书的ID查询书的信息,包括主人信息。那么
public static BookWithPerson QueryJoin(Book book)
{
    using (IDbConnection connection = new SqlConnection(connectionString))
    {
        var sql = @"select b.id,b.bookName,p.id,p.name,p.remark
                        from Person as p
                        join Book as b
                        on p.id = b.personId
                        where b.id = @id;";
        var result = connection.Query<BookWithPerson, Person, BookWithPerson>(sql,
        (bookWithPerson, person) =>
        {
            bookWithPerson.Pers = person;
            return bookWithPerson;
        },
        book);
      //splitOn: "bookName");
      return (BookWithPerson)result;
  }
}
中,Query的三个泛型参数分别是 委托回调类型1委托回调类型2返回类型。形参的三个参数分别是 sql语句map委托对象参数。所以整句的意思是先根据sql语句查询;同时把查询的person信息赋值给bookWithPerson.Pers,并且返回bookWithPerson;book是对象参数,提供参数绑定的值。
最终整个方法返回BookWithPerson,这样我们所需要的所有信息就有了。
摘自于:https://www.jianshu.com/p/c4ca2989d26a
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇半小时入门Thrift 下一篇.net core 使用MD5加密解密字符串

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目