Peta Poco:如何将多个参数传递给Fetch<;T>;

本文关键字:Fetch gt lt 参数传递 Poco Peta | 更新日期: 2023-09-27 18:26:25

我的代码:

string sql = "SELECT * FROM people where birthday >= @t1 AND birthday <= @t2"
DateTime t1 = DateTime.Parse("01-01-2000");
DateTime t2 = DateTime.Parse("01-01-2001");
var results = db.Fetch<Person>(sql, t1,t2);

此代码产生错误:

additional information: Parameter '@t1' specified but none of the passed arguments  have a property with this name (in 'SELECT......

我想知道正确的语法是什么?

Peta Poco:如何将多个参数传递给Fetch<;T>;

我对petapoco不是很熟悉,但根据错误消息,它似乎试图将参数绑定到传递给Fetch调用的对象的属性。如果是这样的话,试试这样的东西:

var results = db.Fetch<Person>(sql, new {t1 = t1, t2 = t2});

文档并不过于直接,但对于位置参数,您需要使用零索引占位符名称@0@1。。。在您的查询中。尝试:

string sql = "SELECT * FROM people where birthday >= @0 AND birthday <= @1"

如果您使用命名占位符,PetaPoco会查找具有该属性名称的对象,因此会收到错误消息。例如:

sql.Append("AND date_created>=@start AND date_created<=@end", 
    new 
        { 
            start=DateTime.UtcNow.AddDays(-2), 
            end=DateTime.UtcNow 
        }
    );