C# 带有Dapper和参数的非存储过程查询(CommandType=Text)

C# 带有Dapper和参数的非存储过程查询(CommandType=Text),c#,dapper,C#,Dapper,我试图用Dapper中的参数调用一段SQL。它不是一个存储过程(我可以很好地处理参数) 我不断得到“DynamicMethod的类型所有者无效”。(我在使用DynamicParameters而不是anomymous对象时也得到了这个结果) SQL在数据库本身上运行良好(假设我声明并@populate@customerName和stationName) 我怀疑我犯了一些非常简单的错误-有人能告诉我吗?答案是,最后,问题中没有包含代码问题-对此我深表歉意 问题是T是一个接口,这就是导致Dapper爆

我试图用Dapper中的参数调用一段SQL。它不是一个存储过程(我可以很好地处理参数)

我不断得到“DynamicMethod的类型所有者无效”。(我在使用DynamicParameters而不是anomymous对象时也得到了这个结果)

SQL在数据库本身上运行良好(假设我声明并@populate@customerName和stationName)


我怀疑我犯了一些非常简单的错误-有人能告诉我吗?

答案是,最后,问题中没有包含代码问题-对此我深表歉意

问题是
T
是一个接口,这就是导致Dapper爆炸的原因。这可能意味着您只能使用类,而不能使用接口作为查询的类型参数。虽然我从未见过明确规定的限制


羞耻,(但我可以想象一些原因)

这有帮助吗?在我发布之前阅读它,而不是我的情况,我不认为-我传递的是一个带有属性的对象作为参数,而不是数组。你能试着将inputStationName的值设置为DBNull.value而不是null吗?我以前尝试过用一个值填充这两个参数,这没什么区别。
inputCustomerName = "Our Customer";
inputStationName  = Null;

    var parameters = new
    {
        customerName = inputCustomerName ,
        stationName = inputStationName    
    };     

    ...

    using (var dbConn = dataProvider.CreateConnection)
    {
        dbConn.ConnectionString = connectionString;
        dbConn.Open();
        returnValue = dbConn.Query<T>(sql: sql, commandType: commandType, param: parameters);
        dbConn.Close();
    }
"    ...

     WHERE 
        Customer = ISNULL(@customerName,Customer)
        AND Station = ISNULL(@stationName,Station)
";