【问题标题】:Invalid cast from 'System.String' to 'System.TimeSpan' EF 4.1/MySql Connector/Net 6.4.4从“System.String”到“System.TimeSpan”的无效转换 EF 4.1/MySql Connector/Net 6.4.4
【发布时间】:2011-12-19 01:19:47
【问题描述】:

对于我的生活,我无法弄清楚这个错误 - 我在 mysql 中有两个时间字段,正确映射为 ASP.net 实体框架中的时间戳字段。我可以毫无问题地分配和插入数据库,但是,每当我尝试通过简单地查询数据库来加载数据时,我都会收到以下错误消息:Invalid cast from 'System.String' to ' System.TimeSpan'

        using (hydraEntities db = new hydraEntities())
        {

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

我想不通,我已将 mysql 连接器升级到最新版本,祈祷能解决这个错误 - 但是并没有解决它。任何帮助将不胜感激!

【问题讨论】:

  • 您确定要时间跨度吗?通常你会使用 dateTime。
  • 是的 - 时间跨度是首选,因为我只存储一天中的时间而没有特定日期,时间可能出现在多个日期,例如,对于特定职位,员工将工作 8到 5 ,周一到周五,所以我只存储开始时间和结束时间
  • TimeSpan 类不存储一天中的时间。它表示两个日期之间的比较。 DateTime 可能是您所追求的。
  • 在 mysql 中将其存储为时间 - 但是 asp.net 实体框架用时间跨度表示它
  • 我已经切换到日期时间 - 虽然它不是理想的情况,但它确实有效,所以感谢 cmets 伙计们

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


【解决方案1】:

尝试这样的事情.. TimeSpan 是与 Length 的交易,也许您的意思是 TimeStamp.. 如果你的意思是 TimeSpan 是什么情况……你能仔细检查并澄清一下……吗?

TimeSpan 可以工作.. 这是您可以使用的东西.. 问题是您需要计算时间跨度字段中的毫秒数,以用我在此代码示例中粘贴的毫秒数替换您的毫秒数

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

【讨论】:

  • 问题是代码是由实体框架自动生成的 - 因此我真的不知道在代码方面甚至提供什么 - 我希望我能
  • 嗨 DJ - 我已经切换到 DateTime - 虽然我希望时间跨度/时间字段能够正常工作,但他们没有。不幸的是,据我所知 mysql 时间戳和 EF 不起作用 - 感谢您的帮助
  • 它实际上会起作用..这归结为数据类型转换..我希望您能够解决您遇到的问题..
【解决方案2】:

好的,这篇文章是关于人们如何存储一天中的时间的。 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);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多