Подтвердить что ты не робот

Entity Framework 6.1 - Создать индекс с помощью инструкции INCLUDE

Итак, теперь, когда индексы доступны в последней бета-версии Entity Framework 6.1, возможно ли даже создать индекс в первом подходе кода, который равен этому выражению SQL?

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

Ответ 1

Строго говоря, это всегда было возможно в First First Migrations, потому что вы можете запустить 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);
        }
    }

Но я понимаю, что вы, вероятно, действительно спрашиваете, можете ли вы создать индекс, используя IndexAttribute, представленный в 6.1, но с столбцом Include - ответ на этот вопрос "Нет"

Ответ 2

Так как у меня нет EF 6.1, я предполагаю, что это может быть близко (я предполагаю, что SampleId и Date являются составным первичным ключом, а Value - несимвольным столбцом, который вы хотите включить):

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;}
}

Но я не могу проверить прямо сейчас, поэтому кто-то должен будет подтвердить.