Предположим, у меня есть таблица - UserToChannel_tbl
, которая имеет следующие поля - Id, UserId and ChannelId
. Я получение EntityTypeConfiguration
и положить все свойства в том, что, как показано ниже (например) -Добавление некластеризованного индекса для нескольких столбцов в конфигурации asp.net mvc
public class UserToChannelConfiguration : EntityTypeConfiguration<UserToChannel>
{
public UserToChannelConfiguration(){
HasKey(p => p.Id);
Property(p => p.Id)
.HasColumnName("Id")
.HasDatabaseGeneratedOption((DatabaseGeneratedOption?) DatabaseGeneratedOption.Identity)
.IsRequired();
Property(p => p.UserId)
.HasColumnName("UserId").IsRequired();
HasRequired(p => p.User).WithMany().HasForeignKey(t => t.UserId);
Property(p => p.ChannelId)
.HasColumnName("ChannelId").IsRequired();
HasRequired(p => p.Channel).WithMany().HasForeignKey(t => t.ChannelId);
}
}
Теперь таблицу уже кластерный индекс по Id
колонку, но мне также нужен не-кластерный индекс UserId, ChannelId
колонка. Есть ли способ достичь этого здесь, а не делать это в классе Migration
или где-либо еще. Мне кажется намного проще, если я могу определить все свои свойства в одном месте. Я использую ASP.NET MVC 4 с EF6.
В EF 6.1 Да, вы можете определить индексы через атрибут или Fluent API. См. Http://msdn.microsoft.com/en-us/data/jj591617.aspx#PropertyIndex – SBirthare