c# - Dapper 选择映射到模型的内连接

标签 c# asp.net-core asp.net-core-mvc dapper

假设我有下表

  Table Products
  --------
  Id (int)
  Name (varchar)
  BrandId (int)

  Table Brands
  -----------
  Id (int)
  BrandName (varchar)

以及 CSharp 中的以下类

public class Product{
   public int Id { get; set;}
   public string Name { get;}
   public ProductBrand Brand { get;}
}
public class ProductBrand{
   public int Id { get; set;}
   public string BrandName { get;}
}

如何选择内部联接这两个表并映射到 ProductBrand 模型及其所有属性都在 dapper 中?

最佳答案

工作代码,请进行如下更改,

    public class Product{
   public int Id { get; set;}
   public string ProductName { get;}
}
public class Brand{
   public int BrandId { get; set;}
   public string BrandName { get;}
   public IList<Product>Products { get;}
}

var sql ="SELECT Id, ProductName, BrandId, BrandName FROM Brand B INNER JOIN Product  P ON B.BrandId=P.BrandId"
var products = connection.QueryAsync<Brand, Product, Brand>(sql, 
(brand, product) => {
if(brand.Products==null)
{
    brand.Products = new List<Product>;
}
    brand.Products.Add(product);
    return brand;
},
splitOn: "BrandId");

关于c# - Dapper 选择映射到模型的内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67963966/

相关文章:

c# - 流利的 NHibernate,实现 ISQLExceptionConverter 的正确方法

c# - 如何使用 LINQ 或响应式(Reactive)扩展拆分带有嵌入转换标记的列表?

c# - 如何在 asp.net core 中使用 Fetch api 将数据传递给 Controller

c# - 如何将 C# 资源文件字符串转换为方法而不仅仅是属性?

asp.net - Angular 2 - ASP.NET MVC 应用程序 - 无 SPA

c# - 显示 DateOfEdited 和 DateOfInserted

c# - 监听 Internet Explorer 下载事件

C# - 从列表框中删除所有项目

html - 如何将格式化文本包装在响应式表格中?

asp.net-core - Kestrel 服务器在后台运行时不工作,为什么?