2012-10-22 15 views
7

PK sütununda newsequentialid()'u varsayılan değer olarak nasıl kullanabilirim?Entity Framework 5 kodu first newsequentialid() PK olarak

Bu ek açıklama vardır:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 

Ama bu sıralı guid 's istiyorum rastgele GUıD'ın üretecektir.

Veritabanını el ile newsequentialid() varsayılan değer olarak ayarlayabilirim, ancak daha iyi bir seçenek yok mu? Yoksa EF ekibi bu seçeneği unuttu mu?

cevap

14

Eğer geçişleri kullanıyorsanız, newsequentialid()'u DefaultValueSql olarak kullanmak için kod tabanlı geçişi basitçe değiştirebilmeniz gerekir.

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

Eğer kullanmıyorsanız göçler bu question kontrol edin.

+0

Anahtar ve DatabaseGenerated virgülünü ayrı ayrı eklendiyse, çalışmasını sağlamak için ayrılmış olmalıyım. –