Неверное приведение из «System.String» к «System.TimeSpan» EF 4.1 / MySql Connector / Net 6.4.4 - PullRequest
0 голосов
/ 19 декабря 2011

Для жизни я не могу понять эту ошибку - у меня есть два временных поля в mysql, правильно отображаемых как поля Timestamp в ASP.net Entity Framework.Я могу назначить и вставить в базу данных без проблем, однако всякий раз, когда я пытаюсь загрузить данные обратно, просто запрашивая базу данных, я получаю следующее сообщение об ошибке: Неверное приведение из 'System.String' в 'System.TimeSpan '

        using (hydraEntities db = new hydraEntities())
        {

            Employer = db.employers.Include("address").Where(em => em.EmployerId == EmployerId).First();
        }

Я не могу понять это, я обновил соединитель mysql до последней версии, молясь, чтобы исправить ошибку - однако это не исправило ее.Буду признателен за любую помощь!

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Попробуйте что-то вроде этого .. TimeSpan это сделка с длиной, возможно, вы имели в виду TimeStamp .. что будет, если вы имели в виду TimeSpan .. можете ли вы дважды проверить и уточнить ..?

TimeSpan будет работать .. вот кое-что, что вы могли бы использовать .. проблема в том, что вам нужно вычислить миллисекунды того, что находится в поле временного интервала, чтобы заменить ваши миллисекунды тем, что я вставил в этом примере кода

DateTime dt = new DateTime().Add( TimeSpan.FromMilliseconds( 1304686771794 ) ) 
0 голосов
/ 19 декабря 2011

Хорошо, так что этот пост о том, как люди подошли к хранению времени суток. C # DateTime: какую «дату» использовать, когда я использую только «время»?

это на самом деле не то, что C # понимает как таковое, так что все это немного обходится,Если вам действительно нужен временной интервал, вам, вероятно, лучше будет сохранить его как целое число в базе данных для числа тиков в временном интервале, а затем преобразовать его в вашу модель.

Другой вариант - хранить компоненты часов / минут в собственной структуре данных.

например,

public class TimeOfDay
{
    public int Hours{get;set;}
    public int Minutes{get;set;}

    //possibly even
    public TimeSpan TimeSpan
    {
        get
        {
            return new TimeSpan(new DateTime(2000,1,1,Hours,Minutes,0).Ticks -new DateTime(2000,1,1).Ticks);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...