entity framework代码第一外键添加索引
我在EF 6代码中有简单的表定义 – 首先是简单的外键。
public class Address { /// /// Gets or sets the id. /// [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Column(Order = 1)] public int Id { get; set; } /// /// Gets or sets the town. /// public virtual Town Town { get; set; } /// /// Gets or sets the paf address town id. /// [Column(Order = 2)] public int TownId { get; set; } }
创建表时,它正在创建外键和索引。 我想知道为什么,因为这样的索引通常非常低效,而对于大型数据库,它会导致很多问题。 那么为什么它只创建该索引而不是外键。 以及如何默认禁用此类索引创建。
这只是entity framework的惯例。 如果您不喜欢它,则可以在项目上启用迁移并将迁移更改为不包括外键。 不过,我不同意你的断言,即效率低下。
要启用数据库迁移,请执行以下操作:
- 在程序包管理器控制台中,键入
Enable-Migrations
- 在程序包管理器控制台中,键入
Add-Migration InitialMigration
- 新的迁移将添加到Migrations文件夹中,您将在其中看到包含一些语句的
Up
方法。 找到添加外键并删除它的行。 - 在程序包管理器控制台中,键入
Update-Database
以应用迁移。 - 对于进入的任何新更改,请重复步骤2-4。
这假设您还没有数据库并且从头开始。