2011-06-03 104 views
2

我有一個主鍵作爲標識列的表。我正在用linq-to-sql做一個插入,我想知道是否有方法返回插入的行的ID,以及我們如何確定插入是否發生。linq插入:獲取行號

感謝您的建議。

回答

2

用於插入的實體的主鍵屬性將在使用數據庫中的ID調用SubmitChanges之後更新。

例:

using (var dc = new MyDataContext()) 
{ 
    MyEntity entity = new MyEntity(); 

    dc.MyEntities.InsertOnSubmit(entity); 
    dc.SubmitChanges(); 

    int pkValue = entity.PKColumn 
} 
1

使用LINQ到SQL它會在自動保存,所以只看.Id(或其他)任何更新IDENTITY(等)的性質。

知道它發生了:更新等事務發生在一個事務中;該交易必須承諾已經擺脫該方法而沒有例外。如果你有一個外部TransactionScope(或類似),那麼它取決於你提交;總之 - 直到你確實承諾你有一個幻影記錄。因此,請避免在任何地方傳遞該新ID,直到您承諾完成所有交易。

1

插入記錄的標識應自動填充爲插入添加到DataContext的對象。只需檢查該對象上的ID。

此外,你可以看看在DataContextGetChangeSet()方法see what changes it has tracked如果要了解受影響的記錄數等詳細信息手冊..