2010-08-27 3 views
2

Я переношу некоторый унаследованный код в LINQ to SQL, и у меня возникают некоторые трудности со следующей хранимой процедурой.Возврат @@ RowCount в 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 to SQL должен определенно return (numsRowsAffected > 0);, то есть булевский ва ЛУЭ или что-то подобное

+0

Есть ли встроенный способ получения 'numRowsAffected' из' Context' или 'Changeset', возможно, в LINQ? –

+0

@Refracted Paladin: после 'db.SubmitChanges();' call 'db.GetChangeSet(). Updates.Count' это именно то, что ищет – abatishchev

+0

' Updates' или 'Inserts'? Я не хочу брать ваш ответ слишком буквально, я просто хочу убедиться, что что-то странное не происходит. –

1

Поскольку вы только вставить одну строку, она должна вернуть 1. (Если бы вы использовали INSERT INTO ... SELECT FROM ... вставить несколько строк, она будет выше)

В LINQ, перетащите сохраненный proc из проводника сервера, на диаграмму LINQ (так же, как и для таблиц). Он создаст метод для DataContext для обработанного proc. (Возможно, вам придется открыть панель «Метод» из контекстного меню)

Смежные вопросы