您好我正在使用此存储过程从不同的表中获取数据 这是存储过程
DECLARE @default time='16:43:22.560'
SELECT
ev.Id,
ev.Title,
ev.PageUrl,
ev.FromDate,
ev.ToDate,
ev.Isactive,
CONVERT(char(10), ISNULL(eventtime,@default), 108) as EventTime,
ev.UserType,
ev.Street,
ev.Image,
ev.Description,
ev.City,
ev.CountryCode,
ev.CategoryId,
ev.UserId,
ev.StateCode,
cm.Name as 'CountryName',
sm.name as 'StateName',
asp.FirstName as 'FirstName',
Cat.Name as 'CategoryName',
ev.ZipCode
from events ev
inner join countrymaster cm on ev.CountryCode=cm.Id
inner join statemaster sm on ev.StateCode=sm.Id
inner join category cat on ev.Categoryid=cat.Id
left join aspnetusers asp on ev.userid=asp.Id
order by createddate desc
在第7列事件时间我正在投射它并检查该列中是否有空值然后设置默认值。 但是当我通过我的c#代码执行存储过程时 她是我的代码
public static async Task<IEnumerable<Event>> GetallPostedEvents()
{
using (var con = DbHelper.SqlConnection())
{
return await con.QueryAsync<Event>(GetEventsSP, commandType: CommandType.StoredProcedure);
它会像这样返回错误
System.String&#39;到&#39; System.TimeSpan
表中EventTime列的数据类型是时间
我的c#代码中的EventTime数据类型是
public TimeSpan?EventTime { get; set; }
请帮忙。
答案 0 :(得分:1)
注意:在SP中,您正在进行char(10)转换,即字符串和映射失败。
你可以这样做
EventTime = TimeSpan.Parse(dbstring);
由于您直接使用mapper键入Event。将其映射到字符串然后进行解析。