Skip Navigation Links
 Tudástár cikkek 
 Konferenciaanyagok 
 Dokumentumok 
 NetAcademia Blog 

NetAcademia Blog

IE8 Accelerator Tudástár kereséshez   Kereső szolgáltatás Tudástár kereséshez
 


LINQ to SQL tárolt eljárás és null paraméter
- Erdélyi István -

 Feliratkozás Rss feed 2009. 09. 23. 10:41
Sziasztok!

Van egy tárolt eljárásom, aminek bizonyos paraméterei felvehetik a null értéket is.
Ez korábban szépen működött, de most, hogy áttérek LINQ-ra, nem fogadja el.

Felhúzom VS-ben a táblákat és a tárolt eljárást, majd megadva a paramétereket a következő hibát kapom futási időben: Az érték nem lehet NULL. Paraméter neve: value
(persze az adott paraméter valóban null és nem varchar(20) de ezt az sql szépen megeszi)

Az okát értem, de nem tudom hogy lehetne megoldani anélkül, hogy a tárolt eljárást módosítanom kéne. ?

Köszönöm,
István

Re: LINQ to SQL tárolt eljárás és null paraméter Tocsi (2009. 09. 23. 15:54) Tocsi
  Amit írtál, abból nekem nem derül ki, hogy ki üzeni ezt - az sql vagy a linq.
Egyrészt a LinqToSql-nél az ilyen paraméterek legyenek nullozhatók (referencia típus vagy nullable). Aztán nézt meg Sql Profilerrel, hogy mit küld át (vagy a
datacontexen kapcsold be a logot egy streamre). Lehet, hogy a linq null-t kap, de az sqlnek már azt mondja hogy pl.: @parameter=default. Ha a tárolteljárásnál nincs megadva a paraméternek default értéke, akkor ez bizony elszáll.
Nem vagyok benne biztos, mintha a linq objecteknél a tulajdonságokon lehetne állítani default értéket.
 
Re: LINQ to SQL tárolt eljárás és null paraméter Erdélyi István (2009. 09. 23. 21:41)
  Igazad van, megnéztem rendesen. A LINQ küldi, mert az SQL-ig már el sem jut.
Három paramétert adnék át, ami bizonyos esetekben null értékeket vesznek fel. Ebből kettő string, ezzel nincs probléma, de van egy byte tömb is, ami okozza a problémát.
(System.Data.Linq.Binary..ctor(Byte[] value) )

Ezek egy fájl adatait tartalmazzák, a byte tömb pedig maga a file.

Végül ennek adtam egy üres értéket (new byte[] {} ) így már elfogadja a Linq.
Igy adatbázisban a mező értéke nem lesz null. Ezt vagy lekezelem a tárolt eljárásban, vagy nem. Igazából nem zavar.

Köszi a segítséget,
Üdv,
István
 

Bejelentkezve hozzá is szólhat

Cím: 1077 Budapest, Kéthly Anna tér 1.
Telefon: (06 1) 472-1214
Fax: (06 1) 472-1215
Nyitvatartás, ügyfélszolgálat: 830-1630
Regisztrációs szám: 01-0707-04
Fat akkreditációs lajstromszám: AL-1680
Írjon nekünk!
Tudástár PPT-k Dokumentumok Blog Próbatesztek