Cela semble définitivement être un problème différent de celui du Multithreading issue. Utilisation de l'unité avec injection de dépendances (DI) pour tous mes services et utilisation d'un contexte de structure d'entité qui semble être initialisé et fonctionner correctement.Lors de l'utilisation de Unity DI, comment ajouter un service Non DI avec Entity Framework
Utilise actuellement .net 4.5 avec mvc et Unity.WebApi et framework d'infrastructure 6.0.0.0.
Je veux savoir s'il est possible de conserver un service dans ce modèle ou de l'utiliser en dehors de DI et de pouvoir fermer et réinitialiser l'infrastructure d'entité dans le service persistant si possible.
Je reçois actuellement cette erreur lorsque j'essaie de maintenir un service dans une classe de pile pour que ses performances soient très rapides car je l'utilise plus fréquemment.
The Error message I am getting is: Error Message: The underlying provider failed on Open. - The connection was not closed. The connection's current state is connecting.( at System.Data.Entity.Core.EntityClient.EntityConnection.Open()
Le but est de récupérer une seule entité et faire charge très rapide par rapport à la dépendance version à injection et exposer les résultats grâce à un service. L'entité est liée à une table SQL à des fins de consignation.
Voici l'extrait de code des raisons pour lesquelles je suis en train de faire persister le service:
using System;
using System.Linq;
using Davinci.Models;
namespace Services.Services
{
public interface ILogService
{
void SaveLog(UserLog log);
UserLog RetreiveLog(DateTime dateTime);
}
public class LogService : ILogService
{
private DavinciEntities _DavinciEntities;
public LogService(DavinciEntities context)
{
_DavinciEntities = context;
}
private void SaveLog(UserLog log)
{
_DavinciEntities.UserLogs.Add(log);
_DavinciEntities.SaveChanges();
}
public UserLog RetreiveLog(DateTime dateTime)
{
return _DavinciEntities.UserLogs.Where(m => m.LogTime.ToShortDateString() == dateTime.ToShortDateString()).FirstOrDefault();
}
}
public static class PersistService
{
public static UserLogService userLogService {get; set;}
public static void PersistUserLog(UserLogService service)
{
IUserLogService UserLogService;
if (UserAccessLog == null)
{
UserLogService = (UserLogService)context.Configuration.DependencyResolver.GetService(typeof(UserLogService));
}
}
}
}
Pouvez-vous poster des extraits de code? – ovation22
Copie possible de [Multithreading Entity Framework: La connexion n'a pas été fermée. L'état actuel de la connexion est en cours de connexion] (https://stackoverflow.com/questions/12521695/multithreading-entity-framework-the-connection-was-not-closed-the-connections) – CodeCaster
Afficher le code _minimal_ requis pour reproduire le problème , comme expliqué dans [mcve]. Aussi, partagez votre recherche comme expliqué dans [demander]. Cette erreur concerne la réutilisation d'une ancienne instance DbContext dont la connexion a été fermée, en ne l'éliminant pas correctement et/ou en lui attribuant une durée de vie incorrecte dans votre conteneur DI. Montrez comment vous configurez et utilisez ces classes. – CodeCaster