J'ai vraiment lutté avec le titre sur celui-ci alors j'espère que je vais décrire beaucoup mieux ici!Ninject singleton et Entity Framework avec MVC et API
Nous utilisons Entity Framework comme ORM et Ninject comme infrastructure d'injection de dépendances. Nous relions notre DbFactory et UnitOfWork comme un singleton avec Ninject
Bind<IDbFactory>().To<DbFactory>().InSingletonScope();
Bind<IUnitOfWork>().To<UnitOfWork>().InSingletonScope();
Maintenant, au sein du projet MVC Cela fonctionne très bien, mais nous voulons aussi utiliser une API pour poster des données sur le serveur, puis rafraîchir la page. Il faut environ 10 minutes à EF pour décider qu'il veut interroger à nouveau la base de données pour récupérer les données.
Outre la désactivation de la mise en cache, ma seule théorie est que Ninject crée un objet pour le projet MVC à utiliser et un autre pour l'API. Donc ma question ma théorie est-elle correcte et si oui, comment puis-je surmonter cela?
Edit: modèle Exemple
public class Property
{
public int Id { get; set; }
public virtual ICollection<PropertyPhoto> PropertyPhotos { get; set; }
// Blah blah everything else
}
public class PropertyPhoto
{
public int Id { get; set; }
// Blah blah everything else
}
Maintenant, l'API est mise à jour du modèle PropertyPhoto
par son dépôt alors que le projet mvc utilise le modèle Property
Avez-vous débogué le projet. Il y a beaucoup d'endroits où la mise en cache pourrait se produire. Le navigateur, le proxy HTTP, IIS, .net, ASP.NET MVC, et enfin EF. Essayez de tracer l'endroit où se trouvent les demandes. – Aron
Ce n'est pas le navigateur - nous n'utilisons pas de proxy - nous utilisons IIS Express. Je vais éditer ma réponse avec un exemple de modèle. – Matt
"Nous lions notre ... UnitOfWork comme un singleton". Cela pourrait devenir un problème. Une unité de travail n'est par définition pas singleton, mais plutôt par requête ou quelque chose de similaire. S'il vous plaît jeter un oeil à [ce poste connexe] (http://stackoverflow.com/questions/3266295/net-entity-framework-and-transactions/3266481#3266481). – Steven