2011-12-19 40 views
0

对于我的生活无效投我不能让这个bug想通了 - 我在mysql中两个时间字段,正确映射作为ASP.net实体框架中的时间戳字段。我可以分配,并插入到数据库没有问题,但是,每当我尝试加载数据回来了通过简单地询问我收到以下错误信息数据库:从“System.String”到“System.TimeSpan”投无效从“System.String”到“System.TimeSpan” EF 4.1/MySQL的连接器/净6.4.4

 using (hydraEntities db = new hydraEntities()) 
     { 

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

我不出来,我已经升级了MySQL连接器到最新版本,祈祷会解决的bug - 然而这并没有解决它。任何帮助将不胜感激!

+2

你确定你想要的时间跨度?通常你会使用dateTime。 – 2011-12-19 01:29:51

+0

是的 - 一个时间是首选,因为我只存储一天的时间,没有特定的日期,时间可能发生在多个日期,例如,一个员工将工作的特定位置8日至5日,星期一至星期五,所以我只存储开始时间和结束时间 – 99823 2011-12-19 01:33:02

+1

TimeSpan类不存储一天中的时间。它代表两个日期之间的比较。日期时间可能是你在追求什么。 – 2011-12-19 02:32:12

回答

1

尝试这样的事情.. TimeSpan是一个长度的交易,也许你的意思是TimeStamp .. 如果你的意思是TimeSpan ..你可以仔细检查和澄清..?

时间跨度将工作..这里是一个东西,你可以使用..问题是,你需要搞清楚什么是在时间跨度场毫秒我在此代码示例都粘贴到您的替换毫秒

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

问题是由实体框架自动生成的代码 - 因此,我真的不知道甚至提供了什么代码 - 我希望我可以 – 99823 2011-12-19 02:57:05

+0

嗨DJ - 我已经切换到DateTime - 虽然我希望时间跨度/时间字段会他们没有正常工作。不幸的是,据我所知mysql时间戳和EF不工作 - 感谢您的帮助 – 99823 2011-12-19 03:19:27

+0

它实际上会工作..这归结为一个DataType转换..我希望你能够解决您遇到的问题。 。 – MethodMan 2011-12-19 03:44:43

0

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

它不是一个真正的东西,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); 
     } 
    } 
}