资讯专栏INFORMATION COLUMN

Entity Framework 索引

Kyxy / 1797人阅读

摘要:同样上面的代码也可以多带带定义在一个类中我们前面知道在中创建的索引无法重命名,那么在中创建的索引是否可以重命名吗答案是当然可以,我们只需在前一类中的和方法写入如下代码即可在中创建索引比较简单,只需要调用方法即可。

Entity Framwework 6 设置和使用索引,是一个比较 egg 疼的事情,为什么这么说呢?因为Entity Framwework 6的不同版本有不同的设置和使用方法,按照版本来划分,有三种方法:

EF6 方法

EF6.1.x方法

EF6.2.x方法

EF6

EF6中设置索引比较麻烦,我们需要先进行code first 迁移,然后在迁移类中的 Up 方法中输入如下代码:

//创建索引且值唯一
CreateIndex("dbo.User","Name",unique:true);
//创建复合索引,索引名称为 **NameAndIdNumber**
CreateIndex("dbo.User",new []{"Name","IdNumber"},name:"NameAndIdNumber");

Down 方法中输入如下代码:

DropIndex("dbo.User","Name");
DropIndex("dbo.User",new []{"Name","IdNumber"});
注:EF6中通过迁移类创建的索引无法重命名
EF6.1.x

该版本定义索引的方法如下:

public virtual void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity().Property(p => p.Name).HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute()
    {
      IsUnique=true
    }));
}

上面这段代码的意思是,给User表创建一个唯一索引Name。同样上面的代码也可以多带带定义在一个类中:

public class UserMap : EntityTypeConfiguration
{
  public UserMap()
  {
      Property(p => p.Name).HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute() {
          IsUnique=true
      }));
  }
}

我们前面知道在EF6中创建的索引无法重命名,那么在EF6.1.x中创建的索引是否可以重命名吗?答案是当然可以,我们只需在前一类中的 UpDown 方法写入如下代码即可:

public override void Up()
{
    RenameIndex(table:"db.User",name:"Name",newName:"NameIndex");
}

public override void Down()
{
  RenameIndex(table:"db.User",name:"NameIndex",newName:"Name");
}

EF6.2.x

在EF6.2.X中创建索引比较简单,只需要调用 HasIndex 方法即可。

public class UserMap : EntityTypeConfiguration
{
    public UserMap()
    {

        HasIndex(p=>p.Name);
        //创建复合索引
        HasIndex(p=>new {
          Name=p.Name,
          IdNumber=p.IdNumber
        });
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/61653.html

相关文章

  • Entity Framework 索引

    摘要:同样上面的代码也可以单独定义在一个类中我们前面知道在中创建的索引无法重命名,那么在中创建的索引是否可以重命名吗答案是当然可以,我们只需在前一类中的和方法写入如下代码即可在中创建索引比较简单,只需要调用方法即可。 Entity Framwework 6 设置和使用索引,是一个比较 egg 疼的事情,为什么这么说呢?因为Entity Framwework 6的不同版本有不同的设置和使用方法...

    huayeluoliuhen 评论0 收藏0
  • Entity Framework 小知识(四)

    摘要:在中并没有提供包含索引和过滤索引的创建方法,那么我们就么发创建了吗答案是否定的,我们可以通过迁移类进行创建包含索引和过滤索引。首先我们通过命令创建一个空的迁移类,然后在方法中输入如下代码在方法中输入如下代码 在EF中并没有提供包含索引和过滤索引的创建方法,那么我们就么发创建了吗?答案是否定的,我们可以通过迁移类进行创建包含索引和过滤索引。首先我们通过 Add-Migration 命令创...

    jackzou 评论0 收藏0
  • Entity Framework 小知识(四)

    摘要:在中并没有提供包含索引和过滤索引的创建方法,那么我们就么发创建了吗答案是否定的,我们可以通过迁移类进行创建包含索引和过滤索引。首先我们通过命令创建一个空的迁移类,然后在方法中输入如下代码在方法中输入如下代码 在EF中并没有提供包含索引和过滤索引的创建方法,那么我们就么发创建了吗?答案是否定的,我们可以通过迁移类进行创建包含索引和过滤索引。首先我们通过 Add-Migration 命令创...

    masturbator 评论0 收藏0
  • [C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增

    摘要:本文我们来学习一下在中使用删除多对多关系的实体是如何来实现的。我们将以一个具体的控制台小实例来了解和学习整个实现多对多关系的实体删除的操作过程。执行以上命令,我们这时再打开数据库管理工具。 本文我们来学习一下在Entity Framework中使用Context删除多对多关系的实体是如何来实现的。我们将以一个具体的控制台小实例来了解和学习整个实现Entity Framework 多对多...

    baishancloud 评论0 收藏0
  • Entity Framework简介

    摘要:零什么是简称,是的实体框架简称,可以在等数据库上使用。一领域建模方式有三种领域建模方式和可以通过类来描述模型,然后通过类来创建数据库,这种类简称为。中的是指公共语言运行时,中的一个简单对象。 零、什么是Entity Framework Entity Framework (简称EF),是.NET的 Object/Relational Mapping 实体框架(简称ORM),可以在 SQL...

    forsigner 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<