原文连接:https://www.entityframeworktutorial.net/entityframework6/index-attribute-in-code-first.aspx
javascript
EF 6 Code-First系列文章目录:html
EF 6提供了Index特性,用来在特定的列上面建立索引。java
class Student
{
public int Student_ID { get; set; }
public string StudentName { get; set; }
[Index]
public int RegistrationNumber { get; set; }
}
默认状况下,索引的名称是IX_{属性的名称},可是你能够修改属性的名称。
一样你还能够经过IsClustered=true
来建立聚合索引,或者经过IsUnique=true
来建立惟一索引。数据库
[Index( "INDEX_REGNUM", IsClustered=true, IsUnique=true )]
public int RegistrationNumber { get; set; }
理论学习完了,咱们练习一下:
1.建立一个控制台应用程序,安装好EF:
2.建立一个Student类:app
public class Student
{
public int StudentID { get; set; }
public string StudentName { get; set; }
/// <summary>
/// 表 'dbo.Students' 中的列 'RowVersion' 的类型不能用做索引中的键列。
/// string类型的属性,不能建立索引
/// </summary>
//[Index]
//public string RowStringVersion { get; set; }
[Index]
public decimal RowDecimalVersion { get; set; }
}
3.建立上下文类:ide
public class EFDbContext:DbContext
{
public EFDbContext() : base("name=Constr") {
}
public DbSet<Student> Students { get; set; }
}
4.SQL链接字符串:学习
<!--SQL链接字符串-->
<connectionStrings> <add name="Constr" connectionString="Server=.;Database=EFAnnotationIndexDB;uid=sa;pwd=Password_1" providerName="System.Data.SqlClient"/> </connectionStrings>
5.测试代码:测试
class Program
{
static void Main(string[] args) {
using (var db = new EFDbContext())
{
List<Student> lstModel= db.Students.ToList();
}
Console.WriteLine("success");
Console.ReadKey();
}
}
6.运行程序:
看看生成的数据库:
ui
能够看到RowDecimalVersion列生成了一个默认的索引IX_RowDecimalVersion【不惟一,非汇集】
注意:一个表只能有一个汇集索引,而后不能对字符串类型的列,设置索引.spa