2012-04-23 2 views
0

В NHibernate 3.2 отображения с помощью кода, вы можете индексировать данное поле следующим образом:Как создать индекс по нескольким полям с помощью сопоставления NHibernate 3.2 по коду?

mapper.Class<Customer>(map => 
{ 
    map.Property(x => x.Address, m => m.Index("AddressIndex")); 
}); 

Я хотел бы создать индекс охватывающих следующие поля:

  • Адрес
  • FirstName
  • LastName

Я не вижу метода индекса на 'карте' ob ject, и я не вижу перегрузки в специальном методе индекса, который позволяет вам указывать дополнительные столбцы. Как я могу это сделать?

Edit, я обнаружил, что если я делаю следующее:

mapper.Class<Customer>(map => 
{ 
    map.Property(x => x.Address, m => m.Index("AddressIndex")); 
    map.Property(x => x.FirstName, m => m.Index("AddressIndex")); 
    map.Property(x => x.LastName, m => m.Index("AddressIndex")); 
}); 

создается индекс, охватывающий все 3 колонки, но не в порядке, я указал. Есть ли способ указать порядок столбцов в индексе?

+0

Имеет ли значение вопрос? Я всегда верил, что порядок не имеет значения, поскольку они не являются ключевыми столбцами и хранятся на листовых страницах индекса. – Rippo

ответ

0

Если заказ имеет значение, один из вариантов заключается в создании и выполнении сценария после создания вашей схемы.

Я помню, как читал это примерно composite indexes, и, похоже, может быть, возможно, NOT вопрос!

+0

Заказ определенно имеет значение. Сначала помещая наиболее избирательный столбец (SQL только генерирует статистику по первому столбцу в индексе), SQL Server может фильтровать самый нежелательный фронт. Я не знаю, относится ли это к другим платформам БД или нет. Я до сих пор не понял этого. – Chris

+0

Затем вам нужно будет выполнить сценарий ПОСЛЕ того, как ваша схема была сгенерирована. – Rippo

 Смежные вопросы

  • Нет связанных вопросов^_^