Не могу привести интервал postgresql в C # TimeSpan - PullRequest
2 голосов
/ 01 марта 2012

Я не могу привести интервал postgresql к TimeSpan:

item.TSHours = dr["Hours"] == DBNull.Value ? TimeSpan.Zero : (TimeSpan)dr["Hours"];

бросает:

«Указанный состав недействителен»

но dr["Hours"] возвращает значение "06:00:00": /

Что я делаю не так? Я пробовал несколько версий npgsql, но ничего не изменилось.

dr ["Часы"] - это NpgsqlTypes.NpgsqlInterval

EDIT:

Единственный способ заставить его работать - это использовать:

new TimeSpan(((NpgsqlTypes.NpgsqlInterval)dr["Hours"]).TotalTicks)

1 Ответ

2 голосов
/ 01 марта 2012

По крайней мере, вы не можете напрямую приводить строки в TimeSpan.Это будет работать:

item.TSHours = dr["Hours"] == DBNull.Value ? TimeSpan.Zero : TimeSpan.Parse(dr["Hours"].ToString());

из npgsql APi документы:

Во избежание навязывания ненужных проблем, связанных с провайдером, пользователям, которым не нужно их интересоватьвызов GetValue для поля, содержащего значение NpgsqlInterval, вернет TimeSpan, а не NpgsqlInterval.

...