Я использую Dapper, чтобы связать результаты SQL-запроса с моделью IEnumerable, которую я затем буду использовать для заполнения древовидной сетки на странице.Строка SQL передается через службу асинхронного соединения.Я успешно использовал этот метод в других областях приложения, но в этом случае я получаю сообщение об ошибке «входная строка была не в правильном формате».
Я запустил SQL в SQL Server, и он работаетхорошо и дает результаты.Я также прошел проверку на наличие пропущенной запятой или чего-то в этом роде, но, похоже, нет никаких проблем с форматированием.
select
a.project_id,
b.ext_workpackage_id,
b.workpackage_code,
b.name,
right(b.workpackage_code,3) [Job],
b.[Allocated_To],
convert(integer, b.Duration,2) Duration,
bs.name status,
convert(varchar, b.earliest_start_date, 106) earliest_start,
convert(varchar, b.latest_completion_date,106) latest_completion,
b.Created_Date[createddate],
bt.name type,
bi.name[billing],
c2.CC_USRCHAR1[accessbilling],
CASE
when c2.CC_USRCHAR1=bi.name then '1'
when c2.CC_USRCHAR1 is null then '0'
else '-1'
end[billingmatch],
[workpackage/@iscomplete] =
CASE
WHEN bs.completed = 1 THEN 1
WHEN bs.completed = 0 THEN 0
END
, (select SUM(hours)/60 from EXVW_TMShours h where h.WP like b.workpackage_code + '%' collate SQL_Latin1_General_CP1_CI_AS)[Actual]
--new line to make second duration column equal to sum of child WP durations(not just the sales budget of this WP
, (select CONVERT(DECIMAL(10,2),SUM(child.Duration)) from EXT_Workpackage child where child.Parent_Workpackage_ID=b.EXT_Workpackage_ID and ext_workpackage_status_id not in (3,13)) [child_duration]
,CONVERT(DECIMAL(10,2),x1m.CC_ACTUAL_COST) + CONVERT(DECIMAL(10,2),x1m.CC_COMITT_COST) [xm]
,CONVERT(DECIMAL(10,2),x1s.CC_ACTUAL_COST) [xs]
,CONVERT(DECIMAL(10,2),b.material_cost) [est_mat]
,a.last_update_time[last_update],CONVERT(DECIMAL(10,2),b.scheduleatotal)[scheduleatotal],ct.name[contracttype]
from project a
join EXT_Workpackage b on a.project_id = b.project_id
join EXT_Workpackage_Status bs on b.EXT_Workpackage_Status_ID = bs.EXT_Workpackage_Status_ID
left outer join ext_workpackage_type bt on bt.ext_workpackage_type_id = b.ext_workpackage_type_id
left join ext_workpackage_billing_type bi on b.billing = bi.ext_workpackage_billing_type_id
--left join ext_opera_mats_sum m1 on b.Workpackage_Code=m1.FLD_OPERA_WORKPACKAGE and m1.FLD_OPERA_COSTCODE = 'M'
--left join ext_opera_mats_sum m2 on b.Workpackage_Code= m2.FLD_OPERA_WORKPACKAGE and m2.FLD_OPERA_COSTCODE = 'S'
--left join ext_access_actuals m1 on b.Workpackage_Code=m1.wp and m1.costcode = 'M'
--left join ext_access_actuals m2 on b.Workpackage_Code= m2.wp and m2.costcode = 'S'
left join Project p on a.project_id= p.project_id
LEFT JOIN [CST_COSTCENTRE] x1m on b.Workpackage_Code + 'M' = p.Project_Code + x1m.cc_code and x1m.cc_copyheader= p.Project_Code
LEFT JOIN [CST_COSTCENTRE] x1s on b.Workpackage_Code + 'S' = p.Project_Code + x1s.cc_code and x1s.cc_copyheader= p.Project_Code
LEFT JOIN EXT_workpackage_contract_type ct on b.EXT_Workpackage_Contract_Type_ID= ct.EXT_Workpackage_Contract_Type_ID
left join CST_COSTCENTRE2 c2 on x1m.CC_primary = c2.CC_PRIMARY_2
left join ext_workpackage_approvable_projects wpp on a.Project_ID= wpp.project_id
where a.project_id = 868
--and b.EXT_Workpackage_Type_ID = @Trade_ID
and b.Parent_Workpackage_ID is null
ORDER BY EXT_Workpackage_ID DESC
Так как в SQL Server это работает нормально, я не ожидаю проблем вC # особенно потому, что я успешно использовал этот метод в другом месте приложения.