C# Dapper Dommel-查询联接自动映射

C# Dapper Dommel-查询联接自动映射,c#,.net-core,dapper,dapper-fluentmap,dommel,C#,.net Core,Dapper,Dapper Fluentmap,Dommel,我很抱歉我的英语不好,但现在我用Dapper和Dapper Dommel来简化像crud这样的操作,但在Dommel的Github中说它也支持连接操作,所以我尝试在我的代码中实现它,到目前为止,我设法用Get返回了一个简单的实体 但当我试图将其用于更复杂的操作(如join)时,它会引发一个异常 错误消息显示:SqlException:需要声明标量变量“@product_id” 但在单Get中,它是有效的 套餐: 矮小利落的 多梅尔 Dapper-FluentMap.Dommel 简洁流畅的地图

我很抱歉我的英语不好,但现在我用Dapper和Dapper Dommel来简化像crud这样的操作,但在Dommel的Github中说它也支持连接操作,所以我尝试在我的代码中实现它,到目前为止,我设法用Get返回了一个简单的实体

但当我试图将其用于更复杂的操作(如join)时,它会引发一个异常

错误消息显示:SqlException:需要声明标量变量“@product_id”

但在单Get中,它是有效的

套餐: 矮小利落的 多梅尔 Dapper-FluentMap.Dommel 简洁流畅的地图

吉图布·多梅尔

是否有人设法使用Dapper Dommel在自动映射的联接查询中返回多个实体?

public class DbContext : IDisposable
{
    public SqlConnection Connection { get; private set; }

    public DbContext()
    {
        Connection = new SqlConnection("Server=localhost;Database=BikeStores;Trusted_Connection=True;");
        OpenConnection();
    }

    private bool OpenConnection()
    {
        try
        {
            if (Connection.State != System.Data.ConnectionState.Open)
                Connection.Open();
            return true;
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
            return false;
        }
    }

    public void Dispose() => Connection.Close();
}
Dommel fluent地图:

 public class ProductMap : DommelEntityMap<Product>
    {
        public ProductMap()
        {
            ToTable("production.products");
            Map(m => m.Id)
                .ToColumn("product_id")
                .IsKey()
                .IsIdentity();

            Map(m => m.Name)
                .ToColumn("product_name");

            Map(m => m.BrandId)
                .ToColumn("brand_id");

            Map(p => p.CategoryId)
                .ToColumn("category_id");

            Map(p => p.ModelYear)
                .ToColumn("model_year");

            Map(p => p.ListPrice)
                .ToColumn("list_price");
        }
    }
型号:

   public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int BrandId { get; set; }
        public int CategoryId { get; set; }
        public Category Category { get; set; }
        public int ModelYear { get; set; }
        public decimal ListPrice { get; set; }
    }
让简单的工作:

        using (var connect = new DbContext())
        {
            var product = connect.Connection.Get<Product>(id);
            return product;
        }
使用(var connect=new DbContext())
{
var product=connect.Connection.Get(id);
退货产品;
}
Get不起作用:

    using (var connect = new DbContext())
    {
        var prod = connect.Connection.Get<Product, Category, Product>(1, (product, category) =>
        {
            product.Category = category;
            return product;
        });

        return prod;
    }
使用(var connect=new DbContext())
{
var prod=connect.Connection.Get(1,(产品,类别)=>
{
产品类别=类别;
退货产品;
});
返回产品;
}
        using (var connect = new DbContext())
        {
            var product = connect.Connection.Get<Product>(id);
            return product;
        }
    using (var connect = new DbContext())
    {
        var prod = connect.Connection.Get<Product, Category, Product>(1, (product, category) =>
        {
            product.Category = category;
            return product;
        });

        return prod;
    }