web-dev-qa-db-fra.com

Définir le délai d'expiration de la commande dans le cadre d'entité 4.3

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

32
Saher Ahwal

Si vous utilisez DbContext, vous devrez d'abord descendre dans ObjectContext:

((IObjectContextAdapter)context).ObjectContext.CommandTimeout = 180;
62
bricelam

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();
        }
10
Maurice Jordan

cette commande suffit.

((System.Data.Entity.Infrastructure.IObjectContextAdapter) context).ObjectContext.CommandTimeout
                = 180;
9
m-Abrontan

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 :)

0
Wieslaw Olborski