2013-04-12 4 views
0

Je crée une classe de processeur et exécute un rôle de travail. et à l'intérieur du processeur, je crée la répétition pour faire l'opération CRUD à ma base de données.mvc dbcontext ne fonctionne pas sur Azure

J'ai 2 dépôts, produit et produit, dbcontext est créé dans le produit repo et passe à la taille du produit.

tout fonctionne bien sur ma machine locale, mais quand je Azure à déployer, le système me jette cette erreur:

System.InvalidOperationException: The operation cannot be completed because the DbContext has been disposed. 
    at System.Data.Entity.Internal.LazyInternalContext.InitializeContext() 
    at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) 
    at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() 
    at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() 
    at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() 
    at System.Linq.Queryable.Where[TSource](IQueryable`1 source, Expression`1 predicate) 

processor.cs

public class Processor : IDisposable 
    { 

     private readonly IProductRepository _productRepository; 

     public Processor() 
      : this(new ProductRepository()) 
     { 

     } 

     public Processor(
      IProductRepository productRepository 

      ) 
     { 
      _productRepository = productRepository; 
     } 

     public void Run(){ _productRepository.someoperation;} 

     public void Dispose() 
     { 

      _productRepository.Dispose(); 

     } 

productrepository.cs

 public class ProductRepository : IProductRepository 
     { 


     private static readonly DbContext_context = new DbContext(); 

     private readonly IProductSizeRepository _productSizeRepository; 


     public ProductRepository() 
      : this(
      new ProductSizeRepository(_context)) 
     { 

     } 

     public ProductRepository(
      IProductSizeRepository productSizeRepository 
      ) 
     { 

      _pictureRepository = pictureRepository; 

     } 

    public void Dispose() 
     { 
      _context.Dispose(); 


      _productSizeRepository.Dispose(); 


     } 

dans le workerrole.cs tandis que la boucle en utilisant (var runne r = new Processor()) { runner.Run(); }

+0

Est-ce que vous la base de données SQL Server? – Thomas

+0

Oui, azure sql db – Kiddo

+0

Utilisez-vous toujours SQL Server Compact Edition (SCSE) dans le cloud? – Thomas

Répondre

0

besoin de mettre tous la copie de référence au niveau local = true

et lancer dbcontext dans le code plutôt que dans le constructeur

Questions connexes