【问题标题】:time format for database in entity framework code first?首先实体框架代码中数据库的时间格式?
【发布时间】:2015-02-17 06:57:50
【问题描述】:

microsoft sql server 有数据库列的时间格式。

但是如何先在实体框架代码中配置呢?

我找到了日期时间,但没有找到时间

参考这个链接: http://msdn.microsoft.com/en-us/library/bb677243.aspx

【问题讨论】:

  • 恐怕你的意思根本不清楚。通常,如果您要存储 DateTimeTimeSpan 值,则根本不应该考虑 text 表示...
  • 日期和时间没有格式,它们是类型,存储为二进制值。 SQL Server 没有时间类型的格式。在 EF 代码中使用 TimeSpan 将时间映射到 Timespan。您发布的链接没有说什么不同。也许您将日期和时间文字与实际的类型实现混淆了?
  • 好吧,我想时间跨度是我要找的东西。如果我只想存储时间,存储时间跨度而不是日期时间会更好吗?

标签: c# entity-framework code-first


【解决方案1】:

你好,我用这种方法解决了这个问题

我将我的时间属性作为日期时间类型添加到我的班级并添加一个迁移

迁移是这样的

 CreateTable(
            "dbo.Events",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    EventName = c.String(nullable: false),
                    StartDate = c.DateTime(nullable: false, storeType: "date"),
                    EndDate = c.DateTime(nullable: false, storeType: "date"),
                    StartTime = c.Time(nullable: false),
                    EndTime = c.Time(nullable: false),
                    Description = c.String(),
                })
            .PrimaryKey(t => t.Id);

在此之后,我不时更改了 StartTime 和 EndTime 类型的 Date 然后你可以运行 update-database 命令。

【讨论】:

    【解决方案2】:

    使用 DateTime 数据类型,但忽略 Date,仅根据需要查看 Time。 您也可以使用 TimeSpan,但我想说前一个选项仍然是最简单的。

    DateTime.Now.ToString("t");
    

    【讨论】:

    • 这是一个非常糟糕的主意,引入了格式、国际化性能问题。 datetime 数据不需要使用字符串保存,.NET 已经有了等效的 DateTime 和 TimeSpan 类
    猜你喜欢
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多