Caching og Entity Framework 4
Jeg har lavet en større web app som bruger Entity Framework 4. Jeg bruger et Context-per-request design som indtil nu har virket perfekt.Nu har jeg lagt et cachinglag ind over de entiteter som bliver brugt hele tiden, men er løbet ind i nogle problemer.
Et eksempel: Alle brugere er cachet. Alle brugere har tildelt 0..n roller og denne rolle-navigation er inkluderet i de bruger objekter der er cachet.
Når jeg ønsker at tilføje en rolle til en person via en webform, så er det altså den cachede bruger der hentes ud i koden og der tilføjes en rolle som er i object context'en. Når jeg skal gemme brugeren, vil jeg så attache denne til context'en og markere den som modified. Her får jeg et problem, da EF nu brokker sig over, at der eksisterer roller som allerede er i contexten (hvilket også er sandt nok).
Hvordan kommer jeg udenom dette problem? Findes der en slags "AttachIfNotAlreadyAttached" metode eller en måde man kan se om en entitiet allerede er attached? Jeg ville helst undgå at skulle detache rollerne i web-formen, da caching laget gerne skulle være "gennemsigtigt" og ikke have indflydelse på koden...