エンティティと大まかな日時チェックはワーカーではない

asp.net-mvc dapper entity-framework

質問

私は、ユーザーがこれらの日付の間に検索することができ、私は2つの日付フィールド... の前後に命名して1つのフォームを持って、実体を持っているともDapperの使用します。エンティティからのものは完璧に動作しますが、何らかの理由でdapperからのものが動作しない場合は、エンティティ1が間違っている可能性があります

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

ここには大胆なものがあります

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

はい、私はそれがデータベースに行くが、何らかの理由でそれらの2つの日付の間のレコードを選んでいないとしてDapperのすべての接続を持っている..あなたの提案..

受け入れられた回答

Dapperのは、(周りのわずかな警告を生TSQL 単なるラッパーであるin Dapperのは、単純なクエリ「の」varadic作るためにいくつかの魔法を追加し、)。そう; TSQLで動作する場合 、入力が意味をなさない限り 、大胆にうまく動作するはずです。例えば、私が想定していますそのbeforeafter 、この例では非nullとして型付けされ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 });

基本的には、これらのパラメータがDateTime null値を持つ限り、正常に動作するはずです。


人気のある回答

ここでの問題は、 beforeafter値がstringとして送信され、現在のロケールによって日付が正しく解釈されないことが原因である可能性があります。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow