2016-04-15 158 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);