Объект с составным первичным ключом также создает индекс для одного столбца.C#

Место общения программистов C#
Ответить
Anonymous
 Объект с составным первичным ключом также создает индекс для одного столбца.

Сообщение Anonymous »

Я только что добавил объект 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»