1

我有实体,也使用小巧玲珑,我有 1 个带有 2 个日期字段的表单......在之前之后命名,因此用户可以在这些日期之间进行搜索。来自实体的一个完美运行,但来自 dapper 的一个由于某种原因无法正常工作,这里可能有问题的是实体一

var article = (from x in db.Articles
                           where  x.created >= before && x.created <= after
                           select x);

这是来自dapper的

var article = sqlConnection.Query<Article>("Select * from articles where created>=@befor AND created<=@afte ", new { befor = before, afte = after});

是的,我有 Dapper 的所有连接,因为它确实进入了数据库,但由于某种原因,它没有在这两个日期之间挑选记录..任何建议..

4

2 回答 2

1

dapper只是原始 TSQL 的包装器(在 周围有一点警告in,其中 dapper 添加了一些魔力以使可变的“输入”查询更简单)。所以; 如果它在 TSQL 中工作,它应该在 dapper 中工作正常,只要你的输入有意义。例如,我假设beforeand在这个after例子中被键入为 non-nullable DateTime,即

DateTime before = ..., after = ...;
var article = sqlConnection.Query<Article>(
    "Select * from articles where created>=@befor AND created<=@afte ",
    new { befor = before, afte = after});

作为旁注,仅使用以下内容可能会更明显

DateTime before = ..., after = ...;
var article = sqlConnection.Query<Article>(
    "Select * from articles where created>=@before AND created<=@after",
    new { before, after });

但从根本上说,只要这些参数具有非snullDateTime,它就应该可以正常工作。

于 2013-06-06T07:17:32.290 回答
0

这里的问题可能是beforeafter值被发送为string并且当前语言环境可能导致日期被错误地解释。

于 2013-06-06T07:13:52.757 回答