在 MVC 5 中,模型文件夹中有一个新的身份类。所以假设我向用户添加了一些额外的字段,我会在类里面这样做
公共(public)类 ApplicationUser : IdentityUser
好的,到目前为止一切顺利。我运行 add-migration "updatedUser"
,这将更新数据库。
但是...现在我想添加一个产品、客户和公司表。现在,一些 ASP.NET 教程和 Azure 教程实际上让我为 ApplicationDbContext 类中的每个表设置 getter 和 setter:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Client> Clients { get; set; }
public DbSet<Company> Companies { get; set; }
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
但我认为您不希望从 IdentityDbContext 继承,而是在模型文件夹中设置一个名为:
DatabaseContext.cs
(对于非用户/身份表)
然后做类似的事情:
using MyProject.Domain.Entities;
using System.Data.Entity;
namespace MyProject.Models {
public class DatabaseContext : DbContext
: base("DefaultConnection")
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Client> Clients { get; set; }
public DbSet<Company> Companies { get; set; }
}
这是最佳实践还是我应该使用标识类?重要吗?
最佳答案
为什么你认为你会想要这样做?
由于提供了 ApplicationDbContext,您不会继承您尚未执行的任何操作。
在某些情况下添加第二个上下文可能有意义,但您可能想要访问身份字段,如果您使用不同的上下文,那么您可能会遇到上下文一致性问题。
并且,仅供引用,您没有将 DbSet 放入 ApplicationDbContext 的构造函数中。
关于c# - MVC5 DataContext 最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23485396/