C#: Serializable: Circular reference
Vi bruger LINQ to SQL til at snakke med MSSQL databasen - naturligvis, fristes man næsten til at sige :) Vi arbejder bl.a. med tabellerne Tanks og Sensors, hvor Tanks har en én til mange relation med Sensors. Det betyder, at vi i de objekter LINQ laver, kan kalde tank.Sensors for at hente de sensorer, som har relation til den pågændende tank. Det er rigtig lækkert og nemt at arbejde med. Men jeg er nødt til at sætte typen "Tank" til Serializable, da vi bl.a. har en GetTanks metode på vores ASP.NET Web Service som returnerer en List<Tanks>. Dette giver os en exception, når vi kører metoden, da der opstår en circular reference - som der bl.a. er beskrevet her:http://www.west-wind.com/Weblog/posts/147218.aspx
Som der står i overstående artikel, er man derfor nødt til at ændre associationerne mellem dataobjekterne i LINQ to SQL, så der kun er en intern relation mellem dem.
Det betyder, at man ikke kan hente en tanks sensorer med tank.Sensors på de klienter der bruger webservicen, hvilket er ret uheldigt :( Findes der en anden måde at løse dette på, eller er jeg nødt til også at lave en GetTankSensors(int tankId) metode på min webservice?