簡體   English   中英

實體框架代碼第一外鍵添加索引

[英]Entity Framework Code First Foreign Key adding Index as well

我在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; }
}

創建表時,它正在創建外鍵和索引。 我想知道為什么,因為這樣的索引通常非常低效,而對於大型數據庫,它會導致很多問題。 那么為什么它只創建該索引而不是外鍵。 以及如何默認禁用此類索引創建。

這只是實體框架的慣例。 如果您不喜歡它,則可以在項目上啟用遷移並將遷移更改為不包括外鍵。 我不同意你的說法,即它效率低下。

要啟用數據庫遷移,請執行以下操作:

  1. 在程序包管理器控制台中,鍵入Enable-Migrations
  2. 在程序包管理器控制台中,鍵入Add-Migration InitialMigration
  3. 新遷移將添加到Migrations文件夾中,您將在其中看到包含一些語句的Up方法。 找到添加外鍵的行並將其刪除。
  4. 在程序包管理器控制台中,鍵入Update-Database以應用遷移。
  5. 對於進入的任何新更改,請重復步驟2-4。

這假設您還沒有數據庫並且從頭開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM