11

İleti oluşturulduğunda zaman damgası özniteliğiyle MessageModel var. Bu uzun öznitelikte kümelenmiş bir dizin oluşturmak istiyorum. Tüm iletileri belirli bir zaman damgasından daha yeni bir şekilde almak için bir sorgu yaparken bir sorgu hızlandırma elde etmeyi umuyoruz. Oluşturulduktan sonra zaman damgası değeri hiçbir zaman değiştirilmez. Şu anda bir int Id özniteliğinde düzenli bir dizin var.Entity Framework ve SQL Server ile kod ilk geçişi kullanıldığında kümelenmiş bir dizin oluşturma

ASP.NET MVC 4.5'teki Entity Framework kod ilk geçişini kullanarak bir model özniteliğine kümelenmiş bir dizin nasıl ekleyebilirim?

cevap

24

GÜNCELLEME: EntityFramework 6.1 keyfi bir alanında bulunan bir dizin belirtmek için kullanılabilir [Index] niteliğini tanıtıldı. Örnek:

Maalesef EF doesn't really provide much support for indexes:

public class MessageModel 
{ 
    [Index(IsClustered = true, IsUnique = false)] 
    public long Timestamp { get; set; } 
} 

İdare Framework eski sürümleri için, aşağıda özgün cevabım bırakacaktır. Buna yaklaşmanın en iyi yolu, yaptığınız geçiş türüne bağlıdır. Otomatik geçişleri kullanmıyorsanız ve bir YENİ tabloya bir dizin eklemek istiyorsanız (yani, geçişiniz için bir tane varsa), dizin oluşturmak için geçişte oluşturulan CreateTable deyimini değiştirebilirsiniz. Eğer olan otomatik göçler kullanarak (veya masa zaten var) Eğer

Bu teknik one of the Entity Framework tutorials kullanılan sonra yine dizin oluşturmak için eski tarz SQL kullanabilirsiniz (Endeks bulmak için aramak) - Taşımayı oluşturmak Daha sonra, düz bir eski CREATE INDEX ifadesini içerecek şekilde kodunuzu değiştirin.

+0

Teşekkür ederim, Richard. Temelde korkmaya başladığım şeyleri cevapladınız, ama sanırım CREATE INDEX'i arayacağım ve oradan alacağım :) – Sindre

+2

Bu özellik Entity Framework 6.1'e eklendi. – Richard