gpt4 book ai didi

c# - Entity Framework 代码优先 Fluent Api : Adding Indexes to columns

转载 作者:IT王子 更新时间:2023-10-29 03:44:16 26 4
gpt4 key购买 nike

我正在运行 EF 4.2 CF 并希望在我的 POCO 对象中的某些列上创建索引。

举个例子,假设我们有这个雇员类:

public class Employee
{
public int EmployeeID { get; set; }
public string EmployeeCode { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime HireDate { get; set; }
}

我们经常通过他们的员工代码搜索员工,并且由于有很多员工,出于性能原因将其编入索引会很好。

我们能否以某种方式使用流畅的 API 来做到这一点?还是数据注释?

我知道可以执行类似这样的 sql 命令:

context.Database.ExecuteSqlCommand("CREATE INDEX IX_NAME ON ...");

我非常想避免那样的原始 SQL。

我知道这不存在,但正在寻找类似的东西:

class EmployeeConfiguration : EntityTypeConfiguration<Employee>
{
internal EmployeeConfiguration()
{
this.HasIndex(e => e.EmployeeCode)
.HasIndex(e => e.FirstName)
.HasIndex(e => e.LastName);
}
}

或者可能使用 System.ComponentModel.DataAnnotations POCO 可能看起来像这样(同样我知道这不存在):

public class Employee
{
public int EmployeeID { get; set; }
[Indexed]
public string EmployeeCode { get; set; }
[Indexed]
public string FirstName { get; set; }
[Indexed]
public string LastName { get; set; }
public DateTime HireDate { get; set; }
}

有人对如何做到这一点有任何想法,或者是否有任何计划实现一种方法来做到这一点,代码优先的方式?

更新:如 Robba 的回答中所述,此功能在 EF 6.1 版中实现

最佳答案

在 EF 4.3 中引入迁移后,您现在可以在修改或创建表时添加索引。这是 EF 4.3 Code-Based Migrations Walkthrough 的摘录来自 ADO.NET 团队博客

namespace MigrationsCodeDemo.Migrations
{
using System.Data.Entity.Migrations;

public partial class AddPostClass : DbMigration
{
public override void Up()
{
CreateTable(
"Posts",
c => new
{
PostId = c.Int(nullable: false, identity: true),
Title = c.String(maxLength: 200),
Content = c.String(),
BlogId = c.Int(nullable: false),
})
.PrimaryKey(t => t.PostId)
.ForeignKey("Blogs", t => t.BlogId, cascadeDelete: true)
.Index(t => t.BlogId)
.Index(p => p.Title, unique: true);

AddColumn("Blogs", "Rating", c => c.Int(nullable: false, defaultValue: 3));
}

public override void Down()
{
DropIndex("Posts", new[] { "BlogId" });
DropForeignKey("Posts", "BlogId", "Blogs");
DropColumn("Blogs", "Rating");
DropTable("Posts");
}
}
}

这是添加索引的一种很好的强类型方式,这正是我第一次发布问题时所寻找的。

关于c# - Entity Framework 代码优先 Fluent Api : Adding Indexes to columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8262590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com