Un défaut MVC 5 App est livré avec ce morceau de code dans IdentityModels.cs - ce morceau de code est pour tous les ASP.NET l'Identité des opérations pour les modèles par défaut:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
}
Si je échafaudage d'un nouveau contrôleur à l'aide de vues avec Entity Framework et de créer un "Nouveau contexte de données..." dans la boîte de dialogue, j'obtiens ce générés pour moi:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace WebApplication1.Models
{
public class AllTheOtherStuffDbContext : DbContext
{
// You can add custom code to this file. Changes will not be overwritten.
//
// If you want Entity Framework to drop and regenerate your database
// automatically whenever you change your model schema, please use data migrations.
// For more information refer to the documentation:
// http://msdn.microsoft.com/en-us/data/jj591621.aspx
public AllTheOtherStuffDbContext() : base("name=AllTheOtherStuffDbContext")
{
}
public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }
}
}
Si je échafaudage d'un autre contrôleur + vue à l'aide d'EF, dire par exemple pour un modèle Animal, cette nouvelle ligne serait d'obtenir générée automatiquement droit en vertu de l' public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }
- comme ceci:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace WebApplication1.Models
{
public class AllTheOtherStuffDbContext : DbContext
{
// You can add custom code to this file. Changes will not be overwritten.
//
// If you want Entity Framework to drop and regenerate your database
// automatically whenever you change your model schema, please use data migrations.
// For more information refer to the documentation:
// http://msdn.microsoft.com/en-us/data/jj591621.aspx
public AllTheOtherStuffDbContext() : base("name=AllTheOtherStuffDbContext")
{
}
public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }
public System.Data.Entity.DbSet<WebApplication1.Models.Animal> Animals { get; set; }
}
}
ApplicationDbContext
(pour tous les ASP.NET l'Identité des trucs) hérite de l' IdentityDbContext
qui hérite de DbContext
.
AllOtherStuffDbContext
(pour mes propres trucs) hérite de l' DbContext
.
Donc ma question est:
Laquelle de ces deux (ApplicationDbContext
et AllOtherStuffDbContext
) dois-je utiliser pour tous mes autres modèles? Ou devrais-je simplement utiliser la valeur par défaut générée automatiquement ApplicationDbContext
car il ne devrait pas être un problème à l'utiliser car elle dérive de la classe de base DbContext
, ou aura-t-il des coûts? Vous devez utiliser un seul DbContext
objet dans votre application pour tous les modèles (j'ai lu cela quelque part) donc je ne devrait même pas envisager d'utiliser les deux ApplicationDbContext
et AllOtherStuffDbContext
dans une seule application? Ou quelles sont les meilleures pratiques en MVC 5 avec ASP.NET l'Identité?