2012-10-22 12 views
7

Làm cách nào để sử dụng newsequentialid() làm giá trị mặc định trong cột PK?Entity Framework 5 mã newsequentialid() là PK

Tôi có chú thích này:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 

Nhưng điều này sẽ tạo ra của guid ngẫu nhiên tôi muốn có tuần tự của guid.

Tôi có thể đặt bằng tay cơ sở dữ liệu thành newsequentialid() làm giá trị mặc định, nhưng không có tùy chọn nào tốt hơn? Hay là đội EF quên mất lựa chọn này?

Trả lời

14

Nếu bạn đang sử dụng di chuyển, bạn có thể chỉ cần sửa đổi di chuyển dựa trên mã để sử dụng newsequentialid() làm DefaultValueSql.

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

Nếu bạn không sử dụng di chuyển, hãy kiểm tra điều này question.

+0

tôi phải thêm dấu phẩy chính và cơ sở dữ liệu được phân tách để làm cho nó hoạt động, nếu chúng được thêm riêng biệt, thì nó không hoạt động –