.net 如何创建一个表,该表具有按其中某个组合键排列的组合键?

nimxete2  于 2022-12-20  发布在  .NET
关注(0)|答案(1)|浏览(118)

更新:检查代码后,我发现了这个问题

migrationBuilder.CreateIndex(
                name: "IX_OrdersList_ProductId",
                table: "OrdersList",
                column: "ProductId");

因此我创建了一个空迁移,从该列中删除索引并将其添加到另一列。
问题:
因此,我首先使用代码,并且我有一个具有组合键(产品ID和订单ID)的模型。现在,当在我的SQL Server数据库中创建该表时,它按产品ID排列,但我希望它按订单ID排序。以下是我为数据库编写的一些代码
这是模型

public class OrderProductList
    {

        public virtual Order? Order { get; set; }
        
        public int OrderId { get; set; }

        public virtual Product? Product { get; set; }

        public int ProductId { get; set; }
    }

这里是上下文部分

modelBuilder.Entity<OrderProductList>().HasKey(o => new {o.OrderId,o.ProductId});

以下是迁移中写入的内容

migrationBuilder.CreateTable(
                name: "OrdersList",
                columns: table => new
                {
                    OrderId = table.Column<int>(type: "int", nullable: false),
                    ProductId = table.Column<int>(type: "int", nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_OrdersList", x => new { x.OrderId, x.ProductId });
                    table.ForeignKey(
                        name: "FK_OrdersList_Orders_OrderId",
                        column: x => x.OrderId,
                        principalTable: "Orders",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                    table.ForeignKey(
                        name: "FK_OrdersList_Products_ProductId",
                        column: x => x.ProductId,
                        principalTable: "Products",
                        principalColumn: "Id",
                        onDelete: ReferentialAction.Cascade);
                });

            migrationBuilder.CreateIndex(
                name: "IX_OrdersList_ProductId",
                table: "OrdersList",
                column: "ProductId");

现在,当我选择该表时,它会显示productId为1、2等的所有行。
我不知道这个次序是否重要

table.PrimaryKey("PK_OrdersList", x => new { x.OrderId, x.ProductId });
mrfwxfqh

mrfwxfqh1#

SQL表本质上是无序的集合,您永远不应该依赖查询返回的行的顺序,除非您显式指定了这个顺序(例如,使用order by子句)。

相关问题