2016-02-18 56 views
0

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

我该如何得到正确答案?

+0

使用自动递增的数据库密钥。不要试图创建一个(除非它是一个“Guid”)。如果多个用户正在创建“订单” - 它将全部失败 –

回答

2

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

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