创建多个联接查询-Dapper

时间:2019-11-05 18:39:39

标签: c# orm dapper

最近我正在开发一个应用程序,我的老师要求我将Dapper用作ORM。这是第一次进行。我想为3个表创建一个联接查询,并将值存储在自定义对象中。

这是表格:

public class Customer
{
public int id { get; set; }
public string fname { get; set; }
public string lname { get; set; }
public List<Orders> Order { get; set; }
}


public class Orders
{
public int id { get; set; }
public string code{ get; set; }
public string name { get; set; }
public  Customer Customer { get; set; }
public  Product Product  { get; set; }
}



public class Product
{
public int id { get; set; }
public string name { get; set; }
public string price { get; set; }
public  List<Orders> Order { get; set; }
}

此DTO类别:

public class CustomDTO
{
public string CustomerName { get; set; }
public string OrderName { get; set; }
public string ProductName { get; set; }
}

我想将dapper联接查询执行的结果存储到CustomDTO

1 个答案:

答案 0 :(得分:0)

正如已经指出的那样,您确实需要在您的帖子中提供更多信息,因此人们不必承担太多。 根据您所说的,一种可能的方法是

using (var connection = new SqlConnection("YOUR_CONNECTION_STRING"))
{
    connection.Open();

    string cmdTxt = @"SELECT o.name, c.name, p.name
        FROM Orders o
        INNER JOIN Customers c ON o.customerId = c.Id 
        INNER JOIN Products p ON o.productId = p.Id;";

    var results = await connection.QueryAsync<CustomDTO>(cmdTxt);

    if(results.Any()) {
        //do something with the list of `CustomDTO`
    }

    connection.Close();
}

注意:我假设您的“订单”表具有相关的外键。