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

时间:2016-02-18 04:41:08

标签: c# asp.net-mvc entity-framework ef-code-first

我需要在实际创建会话变量之前将要创建的下一个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"];

我如何得到正确答案?

1 个答案:

答案 0 :(得分:2)

我假设您正在为主键使用自动递增标识字段。在这种情况下,实体框架在保存之前不会生成它的值。有道理,在保存之前你怎么知道它应该是什么价值?

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