更新:检查代码后,我发现了这个问题
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 });
1条答案
按热度按时间mrfwxfqh1#
SQL表本质上是无序的集合,您永远不应该依赖查询返回的行的顺序,除非您显式指定了这个顺序(例如,使用
order by
子句)。