2012-10-22 54 views
7

如何在PK列中使用newsequentialid()作爲默認值?實體框架5代碼優先newsequentialid()作爲PK

我有這樣的註解:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 

但是,這將產生隨機的GUID我想有順序的GUID。

我可以手動設置數據庫爲newsequentialid()作爲默認值,但沒有更好的選擇嗎?或者EF團隊忘記了這個選擇?

回答

14

如果您正在使用遷移,您應該能夠簡單地修改基於代碼的遷移,以使用newsequentialid()作爲DefaultValueSql

public override void Up() { 
    CreateTable(
     "SomeTable", 
     c => new { 
      Id = c.Guid(nullable: false, defaultValueSql: "newsequentialid()"), 
     }) 
     .PrimaryKey(t => t.Id) 
    ); 
} 

如果您未使用遷移,請檢查此question

+0

我不得不添加Key和DatabaseGenerated逗號分開使它工作,如果它們被單獨添加,那麼它不起作用 –