Je ne trouve pas le moyen de définir le délai de commande d'une requête linq en utilisant le framework d'entité 4.3 et son 'DbContext. Comment augmenter Commandtimeout dans le framework d'entité?
EDIT Je recherche actuellement une augmentation du délai de commande. J'ai confondu les deux, c'est la commande sql qui expire et non la connexion.
Merci
Si vous utilisez DbContext, vous devrez d'abord descendre dans ObjectContext:
((IObjectContextAdapter)context).ObjectContext.CommandTimeout = 180;
J'ai ajouté la valeur de délai d'expiration de commande dans ma classe Context dans le but de gérer des temps de traitement plus longs pour certaines des procédures stockées qui remplissent mon application. Il semble avoir fait l'affaire.
public partial class ExampleEntities : DbContext
{
public ExampleEntities()
: base("name=ExampleEntities")
{
((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
cette commande suffit.
((System.Data.Entity.Infrastructure.IObjectContextAdapter) context).ObjectContext.CommandTimeout
= 180;
J'ai eu un problème avec la définition de CommandTimeout lorsque j'utilise wait, comme ceci:
await _dbContext.Database.Connection.QueryAsync("Update ....")
,
alors j'ai trouvé dans la documentation https://docs.Microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.commandtimeout?view=netframework-4.8 cela:
La propriété CommandTimeout sera ignorée lors des appels de méthode asynchrone tels que BeginExecuteReader.
J'ai changé pour:
_dataWarehouseDbContext.Database.Connection.Query("Update ...")
et CommandTimeout commencent à fonctionner :)