Common table expression PETAPOCO-无效的对象名称
我正在将CTE与PetaPOCO一起使用,出现了一个奇怪的错误Common table expression PETAPOCO-无效的对象名称,common-table-expression,petapoco,Common Table Expression,Petapoco,我正在将CTE与PetaPOCO一起使用,出现了一个奇怪的错误 SQL异常:引用数据应映射到的模型的对象名PayTransactionForRollingVacationAverage无效 代码如下 public IEnumerable<PayTransactionForRollingVacationAverage> GetPayTransactionForRollingVacationAverage(DateTime payEndingDate) { Poi
SQL异常:引用数据应映射到的模型的对象名PayTransactionForRollingVacationAverage
无效
代码如下
public IEnumerable<PayTransactionForRollingVacationAverage> GetPayTransactionForRollingVacationAverage(DateTime payEndingDate)
{
PointsNorth.PetaPoco.Sql sql = new PointsNorth.PetaPoco.Sql();
sql.Append(@"
;with HolidayWeeks as
(
Select Distinct EmployeeId, PayEndDate, 'Y' as HolidayWeek
from PayTransactions
where PayEndDate = @payEndingDate
and LaborCode in ('251', '249')
)", new { payEndingDate });
sql.Append(@"
Select
PT.EmployeeId,
PT.PayEndDate,
J.JobClass,
PayCodes.AverageRateCode,
PT.RegularHours,
PT.RegularRate,
PT.RegularAmount
from PayTransactions PT
Left Outer Join PayCodes on PayCodes.PayCodeCode = PT.LaborCode
Left Outer Join HolidayWeeks as H on H.PayEndDate = PT.PayEndDate and H.EmployeeId = PT.EmployeeId
Inner Join Jobs as J on J.JobId = PT.JobId
where PT.PayEndDate = @payEndingDate
and IsNull(H.HolidayWeek, 'N') <> 'Y'
order by PT.EmployeeId, PT.PayEndDate, J.JobClass", new { payEndingDate });
var data = Database.Query<PayTransactionForRollingVacationAverage>(sql);
return data;
}
我尝试将SQL分解以确保其正确构建,但仍然出现错误。知道为什么会发生这种情况吗?这是Peta Poco的已知问题。它似乎是固定在某些版本,但我不知道哪一个。您可以在找到有关此特定问题的详细信息和解决方法。请删除分号前的空格 根据Alex Jorgenson的链接,如果将分号作为第一个字符,则这是固定的。
根据我的测试,这是严格意义上的第一个字符,也就是说,如果分号前有一些空格,自动生成的代码仍然会被吐出来。SQL看起来不错-您在SQL Server上,对吗?您能接受我的答案吗?它帮了我两次。哈哈!9个月后,我又遇到了同样的问题,我发现了这个问题,这就是解决办法。干得好,我!4年后,我发现自己又回到了这个岗位。我爱死你了!
public class PayTransactionForRollingVacationAverage
{
public long EmployeeId { get; set; }
public DateTime PayEndDate { get; set; }
public string JobClass { get; set; }
public string AverageRateCode { get; set; }
public decimal RegularHours { get; set; }
public decimal RegularRate { get; set; }
public decimal RegularAmount { get; set; }
}