gpt4 book ai didi

c# - Entity Framework Code First Foreign Key 添加索引也是如此

转载 作者:太空狗 更新时间:2023-10-29 21:57:53 25 4
gpt4 key购买 nike

我在 EF 6 代码优先中使用简单的外键定义了简单的表。

public class Address
{
/// <summary>
/// Gets or sets the id.
/// </summary>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column(Order = 1)]
public int Id { get; set; }

/// <summary>
/// Gets or sets the town.
/// </summary>
public virtual Town Town { get; set; }

/// <summary>
/// Gets or sets the paf address town id.
/// </summary>
[Column(Order = 2)]
public int TownId { get; set; }
}

创建表时,它会创建一个外键和一个索引。我想知道为什么,因为这样的索引通常效率很低,而且对于大型数据库来说,它会导致很多问题。那么为什么它创建该索引而不是仅创建外键。以及如何默认禁用此类索引创建。

最佳答案

这只是 Entity Framework 的约定。如果您不喜欢它,那么您可以在您的项目上启用迁移并将迁移更改为不包含外键。不过,我不同意您关于它效率低下的说法。

要启用数据库迁移,请执行以下操作:

  1. 在程序包管理器控制台中,键入 Enable-Migrations
  2. 在包管理器控制台中,键入 Add-Migration InitialMigration
  3. 一个新的迁移将被添加到 Migrations 文件夹中,您将在其中看到一个带有一些语句的 Up 方法。找到添加外键的行并将其删除。
  4. 在包管理器控制台中,键入 Update-Database 以应用迁移。
  5. 对出现的任何新更改重复步骤 2-4。

这是假设您还没有数据库并且是从头开始的。

关于c# - Entity Framework Code First Foreign Key 添加索引也是如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22225796/

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