2014-02-26 74 views
25

因此,現在在最新的實體框架6.1測試版中可以使用索引,甚至可以在代碼優先的方法中創建一個等於此SQL語句的索引?實體框架6.1 - 使用INCLUDE語句創建索引

CREATE NONCLUSTERED INDEX [Sample1] 
ON [dbo].[Logs] ([SampleId],[Date]) 
INCLUDE ([Value]) 
+0

我想不會.... – ErikEJ

回答

26

嚴格來說,它一直是他們中的Code First遷移可能的,因爲你可以在遷移運行SQL:

public partial class AddIndexes : DbMigration 
    { 
     private const string IndexName = "IX_LogSamples"; 

     public override void Up() 
     { 
      Sql(String.Format(@"CREATE NONCLUSTERED INDEX [{0}] 
           ON [dbo].[Logs] ([SampleId],[Date]) 
           INCLUDE ([Value])", IndexName)); 

     } 

     public override void Down() 
     { 
      DropIndex("dbo.Logs", IndexName); 
     } 
    } 

但我知道你很可能其實是問,如果你能create an index using the IndexAttribute在6.1中引入的,但與一個包含列 - 這個問題的答案是「否」

+4

是Ind exAttribute是我的目標。但看起來我們仍然沒有好東西=) – Gapipro

-1

因爲我沒有EF 6.1安裝在這裏做,我的猜測是,這可能是接近(我假設SampleId和日期是複合主鍵和值是希望包括非鍵列):

public class Logs { 
    [Key, Column(Order=0), Index("Sample1", 0, IsClusted=false, IsUnique=false] 
    public int SampleId {get;set;} 

    [Key, Column(Order=1), Index("Sample1", 1, IsClusted=false, IsUnique=false] 
    public DateTime Date {get;set;} 

    [Index("Sample1", 2, IsClusted=false, IsUnique=false] 
    public string Value {get;set;} 
} 

但我現在無法測試,所以有人需要驗證。

+2

這將創建索引等於: 創建非聚集索引[樣本1] ON [DBO] [日誌](。 [SampleId],[Date],[Value]) – Gapipro