2016-04-15 81 views
1

在实体框架的表定义中跟踪实体并包括像CreatedAt这样的列时。实体框架默认值SYSDATETIMEOFFSET

如何将列默认设置为系统日期时间偏移量?从这个实体


EF附加迁移代码

public class Entity 
{ 
    [Key] 
    public int Id { get; set; } 
    public DateTimeOffset CreatedAt { get; set; } 
} 

生成此C#:

CreateTable(
    "dbo.Entity", 
    c => new 
     { 
      Id = c.Int(nullable: false), 
      CreatedAt = c.DateTimeOffset(nullable: false, precision: 7) 
     }) 
    .PrimaryKey(t => t.Id) 
    .Index(t => t.Id); 

产生这个SQL:

CREATE TABLE [dbo].[Entity] (
    [Id] [int] NOT NULL IDENTITY, 
    [CreatedAt] [datetimeoffset](7) NOT NULL DEFAULT 
    CONSTRAINT [PK_dbo.Entity] PRIMARY KEY ([Id]) 
) 

回答

0

将生成的迁移C#更改为此,并且生成的SQL是正确的。

CreateTable(
    "dbo.Entity", 
    c => new 
     { 
      Id = c.Int(nullable: false), 
      CreatedAt = c.DateTimeOffset(nullable: false, precision: 7, defaultValueSql: "SYSDATETIMEOFFSET()") 
     }) 
    .PrimaryKey(t => t.Id) 
    .Index(t => t.Id);