2013-04-18 2 views
-5

Я пытаюсь узнать больше о веб-разработке с помощью C# и ASP.Net.Проблема с хранимыми процедурами LINQ to SQL

Я использую LINQ для хранения значений из контактной формы в базе данных, однако для базы данных также требуется «Идентификатор политики», который генерируется путем вызова хранимой процедуры.

У меня нет абсолютно никакой идеи о вызове хранимой процедуры, получения целочисленного значения, сгенерированного, а затем с использованием этого значения для установки PolicyID в таблице.

Может кто-нибудь дать мне с процессом, который будет работать как так:

Execute SPROC, возвращенная политика ID. Получить PolicyID, установить как PolicyNo. add PolicyNo to db.PolicyID

Я понимаю, что некоторые из этих сведений могут показаться довольно дилетантскими, но я никогда не использовал LINQ или хранимые процедуры раньше. До сих пор я был разработчиком.

Заранее благодарен!

EDIT:

Здесь C# код, используемый до сих пор:

using (MagTestDataContext context = new MagTestDataContext()) 
    { 
     //create new instance of tblPolicy object 
     tblPolicy policy = new tblPolicy(); 
     var policyNo = context.spNextPolicyID(); 
     //add values to field 
     policy.PolicyID = policyNo; 
     policy.PolicyHolder = tbName.Text; 
     policy.EMail = tbEmail.Text; 
     policy.Telephone = tbTelephone.Text; 
     policy.Address1 = tbAddressLine1.Text; 
     policy.Address2 = tbAddressLine2.Text; 
     policy.Address3 = tbAddressLine3.Text; 
     policy.Address4 = tbAddressLine4.Text; 
     policy.PostCode = tbPostcode.Text; 
     policy.ExtraInfo10 = tbInsurer.Text; 
     policy.ExtraInfo11 = ddReason.Text; 
     policy.ExtraInfo12 = tbOther.Text; 
    } 
+5

Downvoters: Это вежливо сказать, почему вы это сделали. – spender

+0

Можете ли вы разместить то, что вы пробовали? Какая ошибка вы получаете? –

+1

У меня не было ни единого слова, а всего несколько соображений: LINQ не поддерживает постоянство данных. Вы должны использовать что-то еще для хранения данных. Кроме того, если вы ищете лучшую помощь здесь, вам стоит указать, что вы пробовали до сих пор, включая любой код, который, возможно, не работал. –

ответ

0

Похоже, вы используете Entity Framework. Если это так, вы можете выполнить хранимую процедуру, используя:

using (MagTestDataContext context = new MagTestDataContext()) 
{ 
    var policyid = db.ExecuteQuery<int>("DECLARE @ret INT; EXEC spNextPolicyID @ret OUTPUT; SELECT @ret").Single(); 
} 
+0

Хорошо, что решение сработало до такой степени, я не использую структуру Entity (я вижу), но использовал следующий код: var policyNo = context.ExecuteQuery ("spNextPolicyID {0}"). First(); Теперь я получаю сообщение об ошибке: «Неправильный синтаксис около« 0 ».» – matt5692

+0

Да, это была ошибка с копией в моей части (я отредактировал мое сообщение). Вы можете полностью удалить '{0}' из инструкции. –

+0

И BTW вы используете LINQ-to-SQL для хранения данных. LINQ - это общий язык запросов, который можно использовать для всех типов перечисляемых объектов, а не только для данных SQL. –

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