Entity Framework kullanıyorum ve bazen bu hatayı alırım.
EntityCommandExecutionException
{"There is already an open DataReader associated with this Command which must be closed first."}
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands...
Düz-se bile herhangi bir manuel bağlantı yönetimi yapmıyorum.
bu hata zaman zaman meydana gelir.
hatayı tetikleyen kod (okuma kolaylığı nedeniyle kısaltılmıştır):
if (critera.FromDate > x) {
t= _tEntitites.T.Where(predicate).ToList();
}
else {
t= new List<T>(_tEntitites.TA.Where(historicPredicate).ToList());
}
Her seferinde yeni bağlantı açmak için Desen ata seçeneğini kullanın.
using (_tEntitites = new TEntities(GetEntityConnection())) {
if (critera.FromDate > x) {
t= _tEntitites.T.Where(predicate).ToList();
}
else {
t= new List<T>(_tEntitites.TA.Where(historicPredicate).ToList());
}
}
hala problemli
EF zaten açıksa neden bir bağlantıyı tekrar kullanmayasınız?
predicate
vehistoricPredicate
değişkenlerinizin ne olduğunu bilmek isterim . Geçmene eğer tesbit ettikFunc<T, bool>
içinWhere()
(öyle çünkü "burada" bellekte) bazen işi derlemek ve edecektir. Ne olmalıdır yapıyor geçen birExpression<Func<T, bool>>
etmekWhere()
.