2013-03-08 14 views
0

我正在處理一個MVC/NHibernate/SQL應用程序,我需要將多個行(動態生成)插入同一個表中,同時爲它們提供相同的組標識。 比方說,我有SQL多重插入和一個組標識

fields(id[Identity], date, amount, group_Id) 

如何找出一個GROUP_ID識別組條目表?

據我所知,查詢最大組ID不會是解決方案,因爲許多用戶可能同時訪問應用程序,從而生成相同的組ID。 什麼是最好的辦法呢?

+0

你應該說你正在使用哪個數據庫,確切的解決方案可能因人而異。 – 2013-03-08 20:43:55

+1

創建組,然後你可以選擇最後一個插入ID('SELECT SCOPE_IDENTITY()'在mssql中,應該有一個等效的),然後插入你的其他行然後插入你的其他行 – tonyjmnz 2013-03-08 20:44:41

+0

我使用SQL Server 2008 – agri 2013-03-08 20:54:08

回答

0
IList<Entity> group = ...; 

var firstId = (int)session.Save(group[0]); 
group[0].GroupId = firstId; 

foreach(var e in group.Skip(1)) 
{ 
    e.GroupId = firstId; 
    session.Save(e); 
} 
session.Flush(); 

這確實適用於幾乎每個Id代和數據庫。這取決於第一個條目的唯一ID