Я только что добавил объект EF под названием PurchaseOrderProduct, который создает связь «многие ко многим» между моими PurchaseOrders и продуктами.
[PrimaryKey(nameof(PurchaseOrderId), nameof(ProductId))]
public class PurchaseOrderProduct
{
public int PurchaseOrderId { get; set; }
public PurchaseOrder PurchaseOrder { get; set; }
public int ProductId { get; set; }
public Product Product { get; set; }
}
Однако я не совсем понимаю созданный сценарий миграции. Я хочу, чтобы первичный ключ был составным ключом, основанным на столбцах PurchaseOrderId и ProductId. Но почему он также создает дополнительный индекс IX_PurchaseOrderProducts_ProductId в моем столбце ProductId?
///
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "PurchaseOrderProducts",
columns: table => new
{
PurchaseOrderId = table.Column(type: "int", nullable: false),
ProductId = table.Column(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_PurchaseOrderProducts", x => new { x.PurchaseOrderId, x.ProductId });
table.ForeignKey(
name: "FK_PurchaseOrderProducts_Products_ProductId",
column: x => x.ProductId,
principalTable: "Products",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_PurchaseOrderProducts_PurchaseOrders_PurchaseOrderId",
column: x => x.PurchaseOrderId,
principalTable: "PurchaseOrders",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_PurchaseOrderProducts_ProductId",
table: "PurchaseOrderProducts",
column: "ProductId");
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... gle-column