webForumDet fria alternativet

Entity Framework och Repository Pattern

.NET

1 svar · 616 visningar · startad av StefanBergfeldt

Medlem sedan sep. 2004828 inlägg
Frågan#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?

Medlem 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.

252 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)