2016-02-18 58 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在保存之前不會生成它的值。有道理,在拯救之前,你怎麼知道價值應該是什麼?

確實沒有理由不應該在實體創建時保存實體,然後分配會話變量。堅持它可能會導致您的其他問題,如實體變成不連接到上下文