Jeg har to Repeater Controls. Begge skal fyldes med data fra en SqlDataReader, vha. NextResult() metoden på SqlDataReader objektet.
Jeg benytter "CloseConnection" som CommandBehavior når jeg eksekverer ExecuteReader på SqlCommand objektet, som resulterer i at min DB connection lukkes i samme øjeblik den returnerede SqlDataReader lukkes.
Problmet er, at når DataBind metoden kaldes på Repeater1, lukkes min SqlDataReader automatisk, og dermed også min DB connection, grundet CommandBehavior.CloseConnection. Udelukker jeg denne CommandBehavior, er der ingen problemer.
Da det ikke er en mulighed at udelukke CommandBehavior.CloseConnection, skal problmet løses på en anden måde.
Jeg er ude efter at min SqlDataReader IKKE lukkes ved DataBind. Dvs. at på en simpel måde skal override Repeater Control'ens finalizer/dispose kode, og sørge for at dette ikke sker.
Er det muligt? Andre løsninger?
Vigtigt. Jeg er kun interesseret i at benytte SqlDataReader direkte som DataSource, pga. performance.
det virker lidt som om du spørger efter noget umuligt... CommandBehavior.CloseConnection er et krav, men forbindelsen må ikke bliver lukket. ... hvornår har du tænkt dig at lukke den så, og hvordan ?
Dét at DataBind metoden automatisk lukker f.eks. en SqlDataReader når den har itereret gennem det aktuelle Result Set, er åbenbart en design-beslutning taget hos Microsoft. Jeg mener det konfllikter med det faktum, at en SqlDataReader kan indeholde flere Result Sets, hvorfor en DataBind metode ikke automatisk bør lukke SqlDataReader'en. Jeg er overbevist om at Microsoft's beslutning hviler på vigtigheden ifm. med at lukke SqlDataReader'ere snarest muligt efter brug, og at netop DataBind metoder kan være en faldgruppe for mange udviklere.
Mhs. til dit spørgsmål, så kan man altid manuelt lukke SqlDataReader'en, og dermed sin SqlConnection.
Måske er modellen umulig som ASP.NET 1.1 er designet nu, men jeg mener at det er en interessant mulighed, især i n-tier arkitekturer.
drengen>> til dels? nej, i en n-tier løsning skal en DataReader ikke bruges til at binde til f.eks. en repeater, så simpelt kan det siges. Jeg vil næsten gå så langt til at sige det projekt som indeholder koden til ens aspx-sider bør kunne compileres uden en reference til System.Data.dll.
Omkring en løsning på dit problem og til spørgsmålet omkring det er muligt... så ja, du kan lave din egen DrengenSqlDataReader, det er bare at lave en klasse der implementerer IDataReader-interfacet.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.