2009-10-21 6 views
0

Je suis en train d'exécuter une procédure stockée via L2S et elle renvoie 'La distribution spécifiée n'est pas valide'. Le proc stocké renvoie des données lorsqu'il est exécuté manuellement et quand je le traverse, tout va bien jusqu'à ce qu'il essaye de créer l'objet row dans "foreach (var row in result)".LinqToSql indiquant 'La distribution spécifiée n'est pas valide'

var q = new db(); 
var result = q.GetNearbyLocations(latitude, longitude,searchDistance); 
foreach (var row in result) 
    { 
     var c = new Clinic() 
       { 
        Name = row.CLINIC_NAME.Trim(), 
        Address1 = row.DRADR1.Trim()... 

Idées?

+0

Quels sont les types de données de Clinic.Name, Clinic.Address1, row.CLINIC_NAME et row.DRADR1? –

+0

J'ai trouvé ce lien inestimable ... http://msdn.microsoft.com/en-us/library/ms131092.aspx – Lazarus

Répondre

1

Cela est généralement causé par une incompatibilité de type de données, par ex. si la procédure stockée renvoie un int et qui est mappé à une chaîne, ou si le proc stocké retourne un varchar (1) et qui est mappé à un System.Char.

+0

Le sproc crée dynamiquement une variable de chaîne et l'exécute. Linq n'aime pas ça. Pour que Linq lise correctement les types de retour, je dois le commenter et mettre une instruction sql équivalente. D'une certaine manière, cela ne se passait pas correctement car dans le designer.cs, le type de retour était un int, plutôt qu'un jeu d'enregistrements. J'ai changé le sproc, l'ai réimporté et ai changé le sproc en exécutant la variable de chaîne. Tout est heureux maintenant. Merci à tous! –

1

Votre sporc n'est pas invoqué jusqu'à ce qu'une instruction foreach soit exécutée. Par conséquent, assurez-vous que LINQ to SQL peut correctement mapper les données renvoyées par le sproc à vos objets.

Questions connexes