Adding index to a table

entity-framework, entity-framework-ctp5

Solution

Like operator can be performed with Contains function:

var query = from p in context.Persons
            where p.Name.Contains("abc")
            select p;

Index must be added by SQL - there is no special construction in EF to create index. You can execute this SQL from DB initialization.

First you must implement custom initializer:

public class MyInitializer : CreateDatabaseIfNotExists<MyContext>
{
  protected override void Seed(MyContext context)
  {
    context.Database.SqlCommand("CREATE INDEX IX_Person_Name ON Person (Name)");
  }
}

Then you must register new initializer:

DbDatabase.SetInitializer<MyContext>(new MyInitializer());

Problem

I have a table `Person`: `id, name` I often have queries like: ``` select * from Person where name Like "%abc%". ``` I have 2 questions: - How do I implement this query using code-first 5 (CTP5) - How do I add an index on the name column to make data retrieval faster based on name like in the query?

Original source