Dapper没有返回选定/所需的行

时间:2017-07-28 04:45:10

标签: dapper

我是Dapper的新手,我复制了这个SQL脚本(来自我正在使用Entity Framework进行的测试)并尝试返回这些行的列表,但它返回的是整个类,而不仅仅是那些我想!

using (IDbConnection connection = new SqlConnection(@"Data Source=DESKTOP-CD2UQI5\SQLEXPRESS;Initial Catalog=ServerContext;Integrated Security=True"))
        {
            var res = connection.Query<Table>("select Images,AddressFrom, from Table where Table.id = 1").ToList();
            response = Request.CreateResponse(HttpStatusCode.OK, res);
        }

请帮忙。

1 个答案:

答案 0 :(得分:2)

Dapper没有对你的SQL进行任何处理(好吧,在一些非常非常有限的场景中 )。因此:无论返回的是您的查询 - 它都不会更改查询以删除where子句,并且它不会发明数据。

如果您的意思是返回的列数超出预期,那么请再次:检查您的查询。问题中显示的那个是无效的(select中的尾随逗号),因此我无法根据问题进行评论。检查一个流氓*

所以:带你查询,并尝试运行它SSMS或其他SQL工具;看看哪些行和列回来了。

如果Table.id是唯一的/主要的/身份/等等,那么获得多个似乎很奇怪,但是:我无法告诉这里发生了什么,除了:dapper是只需运行您的查询。

小点:

  • AsList()优于ToList()
  • 如果您只期望一个或最多一个结果,有更方便的方法 - QuerySingle
  • 如果id未修复,您可能需要使用参数,例如:

    int id = ...
    var res = connection.Query<Table>(
        "select Images,AddressFrom, from Table where Table.id = @id", new { id }
    ).AsList();