2

我将 C# 与 TSQL 和 SQL Server 2005 一起使用

我正在尝试使用 PetaPoco 将数据集作为对象列表返回。这是我刚刚使用的代码

var s = PetaPoco.Sql.Builder.Append("USE [BI] EXEC [dbo].[TestProcedure2];");
            var result =  db.Query<dynamic>(s);

var result2 = db.Query<dynamic>("USE [BI] EXEC [dbo].[TestProcedure2];");

我认为错误消息是 petaPoco 失败时的一般 sql 错误。

起初我使用的是带有参数的存储过程,而 @ 字符导致了一个问题,一旦使用 @@ 修复了这个问题,我就开始收到这个错误,所以我用一个简单的 select 语句创建了一个存储过程。该过程在 Management Studio 中执行得非常好。

使用带有 select 语句的 PetaPoco 很好,并且数据完全可以映射到动态或对象模型。我创建了一个垃圾 SQL 字符串,它返回了相同的错误,这是我从中得到一般错误想法的地方。

这是我正在使用的选择,效果很好

var dynTest =
                db.Query<dynamic>(
                   "SELECT TOP 10 * FROM [BI].[dbo].[Managers] ORDER  BY [ConsecutiveDays] desc");
4

2 回答 2

2

它试图在它前面附加 select 子句。
如果你放一个“;” 在您的查询开始时,它不会尝试附加它。

于 2012-01-30T08:00:47.433 回答
1

PetaPoco 假设您要执行 SELECT,如果您不包含一个,它将推断出一个。为避免执行自动 SELECT,您应该使用:

db.EnableAutoSelect = false;

在您查询之前。

于 2012-02-16T11:54:22.667 回答