2010-08-27 113 views
2

我正在將一些遺留代碼遷移到LINQ to SQL,我在使用下面的存儲過程時遇到了一些困難。返回@@ RowCount in LINQ to SQL INSERT

BEGIN 
    INSERT INTO tblCMOEncounterHeader (
     submitter_organization_id, 
     submission_date, 
     begin_posting_date, 
     end_posting_date, 
     number_of_records_transmitted) 
    VALUES (
     @submitter_organization_id, 
     @submission_date, 
     @begin_posting_date, 
     @end_posting_date, 
     @number_of_records_transmitted) 

    RETURN @@ROWCOUNT 
END 

具體來說,什麼是@@ROWCOUNT返回時與INSERT合作?我如何在LINQ中完成同樣的事情?

回答

1
@@ROWCOUNT 

返回受上一語句行

MSDN

在你的情況下,它總是會返回1,我猜,或約束的情況下,產生一個錯誤的數違反等

您的LINQ到SQL代碼應該肯定return (numsRowsAffected > 0);,即一個布爾值VA泰倫或類似的東西

+0

是否有內置的方式從'Context或'Changeset'獲取'numRowsAffected',也許在LINQ中? – 2010-08-27 13:47:05

+0

@Refracted Paladin:在'db.SubmitChanges();'調用'db.GetChangeSet()。Updates.Count'後,它正在尋找 – abatishchev 2010-08-27 13:51:51

+0

'Updates'或'Inserts'?我不想讓你的答案太直,我只是想確保沒有什麼奇怪的事情發生。 – 2010-08-27 13:54:57

1

由於您只插入一列,它應該返回1.(假如你使用INSERT INTO ... SELECT FROM ...插入多行,這將是更高)

在LINQ,將存儲的proc從服務器資源管理器拖到LINQ圖表中(就像您對錶格所做的那樣)。它會在DataContext上創建一個方法來處理存檔過程。 (您可能需要從上下文菜單中打開方法窗格)