从'System.String'到'System.TimeSpan'EF 4.1 / MySql Connector / Net 6.4.4的无效转换

时间:2011-12-19 01:19:48

标签: c# asp.net mysql entity-framework entity-framework-4.1

对于我的生活,我无法弄清楚这个错误 - 我在mysql中有两个时间字段,在ASP.net Entity Framework中正确映射为Timestamp字段。我可以分配和插入数据库没有问题,但是,每当我尝试通过简单地查询数据库来重新加载数据时,我收到以下错误消息: 从'System.String'到'的无效转换System.TimeSpan'

        using (hydraEntities db = new hydraEntities())
        {

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

我无法弄明白,我已经将mysql连接器升级到最新版本祈祷可以解决这个问题 - 但是这并没有解决它。任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:1)

尝试这样的事情.TimeSpan与长度交易也许你的意思是TimeStamp .. 如果你的意思是TimeSpan,那么你能做什么呢?你可以仔细检查并澄清......?

TimeSpan会工作..这是你可以使用的东西..问题是你需要弄清楚在时间跨度字段中用毫秒来替换你在我的代码示例中粘贴的毫秒数的毫秒数

DateTime dt = new DateTime().Add( TimeSpan.FromMilliseconds( 1304686771794 ) ) 

答案 1 :(得分:0)

好的,所以这篇文章是关于人们如何接近存储时间的。 C# DateTime: What "date" to use when i'm using just the "time"?

它并不是C#理解的东西,所以任何东西都是一种解决方法。如果你真的想要一个时间跨度,你可能最好将它作为一个int存储在数据库中的时间跨度中的滴答数,然后在你的模型中转换它。

另一种选择就是将小时/分钟组件存储在您自己的数据结构中。

例如

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);
        }
    }
}