2010-08-28 7 views
1

Je nom storeProcesdure appelé prc_GetID, sa valeur retour (ClientID)LINQ to SQL - Problème dans la procédure stockée

ici Thr Code proc:

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

J'utilise ci-dessus PROCEDURE STORED avec LINQ to SQL , voici le code,

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 

Voici mon code 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 

mais sa valeur return 0 Pourquoi ?,

Répondre

0

Vous devriez probablement examinerez CID.ClientID, pas CID.ReturnValue. ReturnValue est le code de réponse de la procédure stockée, pas les données renvoyées que vous cherchez à trouver. Si vous n'avez pas de propriété ClientID, vous devrez peut-être remapper votre procédure stockée pour que le type de retour approprié soit visible pour votre application.

correction appliquée pour tenir compte de plusieurs résultats (ne songeais pas):

Votre procédure stockée retourne plusieurs enregistrements. Voulez-vous le premier enregistrement retourné? Si oui et vous aurez toujours au moins une ligne de retour, essayez ceci:

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

En réalité, vous devez penser à vos multiples dossiers ou aucun dossier retourné et traiter de façon appropriée. En outre, s'il vous plaît ne pas continuer à faire votre accès aux données à partir d'un formulaire; Il est recommandé de créer un projet de bibliothèque/de couche de gestion pour que la logique métier reste hors de votre interface utilisateur.

+0

CID il n'y a que deux biens 1. GetEnumerator 2. ReturnValue – Suhaibnm

+0

GetEnumerator est suffisant pour obtenir d'abord si vous 'l'aide System.Linq,' – recursive

0

Confondrez-vous la valeur de retour avec le jeu de résultats?

+0

Je ne sais pas s'il vous plaît me dire bon site de tutoriels pour moi. Becoz i newbe à linq – Suhaibnm

Questions connexes