Quelles sont les meilleures pratiques pour l'utilisation de l'Unité avec Entity Framework dans une application MVC 4

Je suis aux prises avec Entityframework dans un MVC 4 app, rendant l'utilisation de l'Unité pour l'injection de Dépendances et Automapper pour mappant automatiquement l'objet de DTO. J'ai exécuté à partir d'une question à l'autre, EF se retournent parfois vieux de données, donc je pense que mon dessin n'est pas assez bon.

Que dois-je:

Pour configurer l'Unité que j'ai dans mon Application_Start:

var UnityContainer = UnityConfig.GetConfiguredContainer();
Mapper.Initialize(cfg => cfg.ConstructServicesUsing(type => UnityContainer.Resolve(type)));
UnityContainer.Resolve<AutoMapperConfig>().MapAutoMapper();
...

Dans UnityConfig.RegisterTypes:

container.RegisterType<IMyContext, MyContext>(new ContainerControlledLifetimeManager())
...

Mon repository de l'utilisation du constructeur d'injection des dépendances:

public class MSSQLTenantRepository : IDalTenantRepository
{
   private readonly IMyContext _Db;
   public MSSQLTenantRepository(IMyContext db)
   {
      Db = db;
   }
...

Et mon contrôleur de l'utilisation du constructeur de l'injection de dépendance trop:

public class TenantController : Controller
{
   private readonly ITenantRepository _TenantRepository;
   public TenantController(ITenantRepository tenantRepository,
   {
      _TenantRepository = tenantRepository;
   }
...

Automapper config:

public class AutoMapperConfig
{
    private readonly ITenantRepository _TenantRepository;
    public AutoMapperConfig(ITenantRepository tenantRepository)
    {
        _TenantRepository = tenantRepository;
    }
...

Questions:
Parfois, j'ai des anciennes données, à partir de la première demande.

Lorsque je mettre à jour manuellement les données de SQL server, EF est le retour de l'objet ne reflètent pas les changements

Quand j'ai essayé différentes options j'ai aussi eu erreur sur plusieurs contexte (en raison de Automapper)

Mes questions:

  • Quelles sont les meilleures pratiques à l'aide de l'Unité, MVC4, EF 6, référentiels et Automapper?
  • Où mettre le code (p. ex. mondiale.asax.c ou dans UnitiConfig.cs de UnityWebApiActivator?
  • Ai-je besoin explicite de disposer de la dbcontext, et si oui: Où le faire?

Il y a beaucoup dit sur ce sujet, mais rien couvre toutes les.

Il semble que vous pourriez être le partage d'un "thread-safe" ... à moins que vous souhaitez gérer le contexte complètement, vous devez utiliser une Unité De la démarche de Travail, habituellement à l'intérieur d'une instruction d'Utilisation.
Est-ce que cela va fonctionner lorsque mon application a PartialViews? J'ai peur que ce soit le contrôleur dispose le contexte, tandis qu'un autre contrôleur de besoin, ou que les deux contextes de suivre la même entité. J'ai regardé asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/... pour une possible mise en œuvre.

OriginalL'auteur RHAD | 2014-01-27