Circular reference

Könnyű belefutni az alábbi XML sorosítási hibaüzenetbe, ha webszolgáltatásokat használunk:

System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: A circular reference was detected while serializing an object of type Result.

Például előjöhet akkor, ha LINQ to SQL designer segítségével összerakjuk az alábbi modellt:

LINQ to SQL modell kapcsolatokkal

Majd utána megírjuk például az alábbi webszolgáltatást:

    [WebMethod]
    public List<Result> GetTopResults( int count, int songId, int difficulty )
    {
        HeroDataContext dc = new HeroDataContext();
        return dc.Results
.Where( r => r.SongID == songId && r.Difficulty == difficulty )
.OrderByDescending( r => r.Score )
.Take( count )
.ToList(); }

Már a LINQ kifejezés miatt is érdekes a fenti kód, de sajnos az előbb említett hibaüzenetet fogjuk kapni, aminek nyilván az asszociációk az okai. Konkrétan egy LINQ-es asszociáció kétirányú kapcsolatot biztosít például az ábrán látható Song és Result osztályok között. A Result osztálynak lesz SongID és Song tulajdonsága, a Song osztálynak pedig Results gyűjteménye. Ettől persze nagyon kényelmes a használatuk csak éppen a körkörös referenciák a sorosításnál bajt okoznak.

Íme a megoldás: állítsuk az asszociáció gyermek tulajdonságának láthatóságát Internalra:

Asszociáció tulajdonságai 

Ne felejtsük el ezt megtenni minden érintett kapcsolatra és remélhetőleg megoldódik a probléma!



Balássy György (MS RD, ASP.NET MVP, MCTS)

Balássy György (MS RD, ASP.NET MVP, MCTS) Villamosmérnök, a BME Automatizálási és Alkalmazott Informatikai Tanszékén webportálok fejlesztését oktatja. 2000 óta foglalkozik a Microsoft .NET platformjával, melynek meghonosításában jelentős szerepet vállalt előadóként, konzulensként és A .NET Framework és programozása című könyv társszerzőjeként. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport vezetője, szakterülete web alapú rendszerek fejlesztése és üzemeltetése. 2004-ben Magyarországon elsőként kapta meg a Most Valuable Professional címet, majd 2005 óta a Microsoft magyarországi regionális igazgatója. Publikációi a Technet Magazinban, az MSDN Kompetencia Központ honlapján és szakmai blogjában olvashatóak.

2008.03.06. 11:20:35 | Permalink | Hozzászólások: 0 | Tárgyszavak: , , , ,


  • Neked mi fontos?

    Dávid Zoltán Nem vagyok egy kerékpáros fundamentalista, főleg csak dolgozni és sörözni járok kerékpárral és csak akkor ha kedvem van (nyilván). A holland Bakfiets láttán  mégis elfogott az irígység: de szép lenne olyan helyen élni, ahol emberek ezekkel a gépekkel közlekednek. Tovább »
  • CSS Sprites

    Gincsai Gábor Biztosan sokan találkoztatok már a CSS sprites kifejezéssel. Ha valaki mégsem ismerné íme egy rövid összefoglaló róla. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások