2010-08-27 111 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上创建一个方法来处理存档过程。 (您可能需要从上下文菜单中打开方法窗格)