J'utilise [Repository & UOW] Pattern pour fonctionner avec EF Core.Pourquoi DbContext éliminé automatiquement après chaque appel api dans EF Core?
Problème
La plupart du temps, après chaque appel avec succès le contexte est disposé & erreur de lancer.
Méthode d'extension
public static IServiceCollection AddDataAccessConfig<C>(this IServiceCollection services) where C : DbContext
{
RegisterDataAccess<C>(services);
return services;
}
private static void RegisterDataAccess<C>(IServiceCollection services) where C : DbContext
{
services.TryAddScoped<IUnitOfWork<C>, UnitOfWork<C>>();
}
ConfigureServices
//Register Context
services.AddDataAccessConfig<MyDbContext>();
services.AddDbContext<MyDbContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("DbCon"));
});
//Register Repository
services.TryAddScoped<IUserRepository, UserRepository>();
J'ai essayé avec le code ci-dessous. Mais pas de chance
TryAddTransient
services.TryAddTransient<IUserRepository, UserRepository>();
Base de dépôt
protected RepositoryBase(IUnitOfWork<C> unitOfWork)
{
UnitOfWork = unitOfWork;
_dbSet = UnitOfWork.GetContext.Set<E>(); // THIS LINE THROW ERROR
}
UOW
public UnitOfWork(C dbcontext)
{
_dbContext = dbcontext;
}
public C GetContext
{
get { return _dbContext; }
}
Exemple de service d'appel
public IActionResult ByUser(string uid, string pwd)
{
var result = _userRepository.GetValidUser(uid, pwd);
if (string.IsNullOrEmpty(result))
{
return Request.CreateResponse(HttpStatusCode.Unauthorized);
}
else
{
return Request.CreateResponse(HttpStatusCode.OK, JsonConvert.SerializeObject(result));
}
}
Qu'entendez-vous par "après chaque appel"? Montrez-nous le code pour cela et le problème que vous rencontrez. – DavidG
'utiliser [Repository & UOW] Pattern pour travailler avec EF Core' <= Pourquoi? Le type 'DbContext' est une implémentation d'un modèle UoW et le type' DbSet 'est une implémentation d'un modèle Repository. Pourquoi réemballer ces types dans votre propre implémentation du même modèle? Vous n'ajoutez rien de valeur, juste plus de code et d'abstractions qui rendent difficile la lecture, le débogage et l'utilisation des types tels qu'ils étaient destinés à être utilisés. –
Igor
@DavidG: J'ai mis à jour mon message –