webForumDet fria alternativet

Entity Framework och Repository Pattern

1 svar · 614 visningar · startad av StefanBergfeldt

StefanBergfeldtMedlem sedan sep. 2004828 inlägg
#1

Jag har utgått från denna artikel: http://weblogs.asp.net/mikaelsoderstrom/archive/2010/06/12/anv-228-nd-poco-st-246-det-i-entity-framework-4.aspx

Det har gått otroligt segt att lära om sig, och titt som tätt får jag detta felmeddelande There is already an open DataReader associated with this Connection which must be closed first.

Hur löser jag det? Jag har inte skapat någon DataReader eller Connection, utan allt sker automatiskt ju.

Jag har utökat mitt Repository med en Dispose-metod:

        public void Dispose()
        {
            ctx.Connection.Close();
            ctx.Connection.Dispose();
            _objectSet = null;
            ctx.Dispose();
        }

Det tänkte jag var en bra idé, men det hjälper inte att anropa den :(

Dessutom rusar min deadline närmare med stormsteg :l
Det är sista gången jag ger mig på något nytt när jag har en deadline, men utvecklingen skulle ju "gå så mycket fortare med EF och Repository Pattern". Ja kanske, när man kan det x(

Vad gör jag för fel, och hur ska jag göra rätt?

HardrockerMedlem sedan nov. 2003310 inlägg
#2

Har ingen direkt lösning då jag inte har stött på problemet men har du wrappat dina ObjectContext i using clauses? Då körs nämligen dispose direkt när man lämnar using-clausen och man då inte några databasanslutningar som är öppna.
Annars kan man ha öppna databasanslutningar som ligger och skräpar tills GC kommer sig för att ta hand om dem

Sen är jag fundersam över varför man i exemplet som du länkar till raderar *.context.tt-filen för att sen återskapa en nästan identisk. Lika bra att använda den som Poco-generatorn skapar automatiskt.

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)