[英]Why does EF Core 2.1 only add 1 index for 2 FKs?
我使用 SQL 服務器 2017 (v14.0.2027.2) 和 EF Core 2.1。
在此代碼上添加遷移后:
public class TblTrack
{
public long Id { get; set; }
...
}
public class TblProduct
{
public long Id { get; set; }
...
}
public class TblProductItem
{
[Key]
[Required]
public long ProductId { get; set; }
[Key]
[Required]
public long TrackId { get; set; }
// Navigation properties
public TblProduct Product { get; set; }
public TblTrack Track { get; set; }
}
Ef Core 僅創建 TrackId 索引
migrationBuilder.CreateIndex(
name: "IX_tbl_ProductItems_TrackId",
table: "tbl_ProductItems",
column: "TrackId");
為什么為TrackId
創建索引而不為ProductId
創建索引?
為什么為 TrackId 創建索引而不為 ProductId 創建索引?
這實際上是 EF 非常聰明和正確的行為。 TblProductItem 的主鍵是 (ProductId,TrackId)。 因此,您已經有一個支持該外鍵的索引(因為 FK 列是該索引中的前導列)。 只有尾隨 PK 列 (TrackId) 需要單獨的索引來支持外鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.