在创建主键字段之前获取主键字段的下一个值

本文关键字:字段 下一个 获取 创建 | 更新日期: 2023-09-27 18:35:18

我需要在实际创建会话变量之前将要创建的下一个 ID 的值分配给会话变量。

我使用了下面的代码,但idd总是导致0.

T_Order objorder = new T_Order();
int id = ((int)Session["logged_in"]);
var date = DateTime.Now;
if (Session["Order"] == null)
{
    objorder.CreatedDate = DateTime.Now;
    objorder.ModifiedDate = DateTime.Now;
    objorder.DeliveryDate = date.AddDays(10);
    objorder.User_ID = id;
    objorder.OrderStatus_ID = 1;
    objorder.OfferType_ID = 16;
    objorder.TypeOfOrder_ID = 2;
    context.T_Order.Add(objorder);
    Session["Order"] = objorder.ID;
}
int idd = (int)Session["Order"];

如何获得正确答案?

在创建主键字段之前获取主键字段的下一个值

我假设您正在使用自动递增的身份字段作为主键。在这种情况下,实体框架在保存之前不会生成其值。有道理,在保存之前如何知道值应该是多少?

实际上,您没有理由不应该在创建实体时保存实体,然后分配会话变量。坚持它可能会导致其他问题,例如实体变得不附加到上下文