Linq to SQL - проблема в хранимой процедуре - PullRequest
1 голос
/ 28 августа 2010

У меня есть имя storeProcesdure, называемое prc_GetID, это возвращаемое значение (ClientID)

Здесь код процедуры:

Create PROCEDURE [dbo].[prc_GetID] (@ID VARCHAR(20)) 
AS
SET NOCOUNT ON;
SELECT ClientID FROM dbo.Clients WHERE [ID]=@ID

Я использую вышеуказанную ХРАНЕННУЮ ПРОЦЕДУРУ с linq to sql, вот код,

Public Class Form2
   Dim dcClients As New dcDataContext(CNString)

         Private Sub btnClick_Click(ByVal sender As Object, _
                          ByVal e As System.EventArgs) Handles btnClick.Click

           Dim CID = dcClients.prc_P(txtID.Text)
           txtClientID.Text = CID.ReturnValue

        End Sub
End Class

Вот мой код dcDataContext


     <FunctionAttribute(Name:="prc_GetID")>  _
 Public Function prc_GetID(<Parameter(Name:="ID", DbType:="VarChar(20)")> _
                   ByVal ID As String) As ISingleResult(Of prc_GetIDResult)
  Dim result As IExecuteResult = Me.ExecuteMethodCall(Me, _
                         CType(MethodInfo.GetCurrentMethod,MethodInfo), ID)
  Return CType(result.ReturnValue,ISingleResult(Of prc_GetIDResult))
 End Function

но это возвращаемое значение 0 Почему ?,

Ответы [ 2 ]

0 голосов
/ 28 августа 2010

Вы путаете возвращаемое значение с набором результатов?

0 голосов
/ 28 августа 2010

Вы, вероятно, должны проверять CID.ClientID, а не CID.ReturnValue.ReturnValue - это код ответа хранимой процедуры, а не возвращаемые данные, которые вы ищете.Если у вас нет свойства ClientID, вам может понадобиться переназначить хранимую процедуру, чтобы получить правильный тип возвращаемого значения, видимый для вашего приложения.

Исправление, примененное к учету нескольких результатов (не задумывался):

Ваша хранимая процедура возвратит несколько записей.Вы хотите вернуть первую запись?Если да, то и у вас всегда будет возвращена хотя бы одна строка, попробуйте следующее:

txtClientID.Text = CID.First().ClientID.ToString()

На самом деле вам нужно подумать о нескольких записях или об отсутствии записейвернулся и разобраться с этим соответствующим образом.Кроме того, пожалуйста, не продолжайте осуществлять доступ к данным из формы;Хорошей практикой является создание проекта библиотечного / бизнес-уровня, чтобы исключить бизнес-логику из вашего пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...