最佳答案
默认的MVC 5应用程序带有IdentityModels.cs中的这段代码-这段代码用于所有的ASP。NET默认模板的标识操作:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
}
如果我使用实体框架的视图脚手架一个新的控制器,并在对话框中创建一个“新数据上下文…”,我得到这个为我生成:
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; }
}
}
如果我使用EF构建另一个控制器+视图,例如一个动物模型,这一新行将在public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }
下自动生成-就像这样:
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
(对于所有的ASP. b0。NET Identity的东西)继承自IdentityDbContext
,而IdentityDbContext
又继承自DbContext
。
AllOtherStuffDbContext
(for my own stuff)继承自DbContext
所以我的问题是:
这两个(ApplicationDbContext
和AllOtherStuffDbContext
)中的哪一个应该用于我自己的所有其他模型?或者我应该只使用默认的自动生成的ApplicationDbContext
,因为使用它不应该是一个问题,因为它派生自基类DbContext
,还是会有一些开销?你应该在你的应用程序中只使用一个DbContext
对象为你的所有模型(我在某个地方读到过),所以我甚至不应该考虑在一个应用程序中同时使用ApplicationDbContext
和AllOtherStuffDbContext
?或者在MVC 5中使用ASP的最佳实践是什么。净身份?