在MVC 5中,models文件夹中有一个新的Identity Class。所以我要说我向用户添加了一些额外的字段,我会在课堂上这样做
public class ApplicationUser : IdentityUser
好的,到目前为止一切顺利。我运行add-migration "updatedUser"
,这将更新数据库。
但是......现在我要添加产品,客户和公司表。现在,一些ASP.NET教程和Azure教程实际上让我为ApplicationDbContext类中的每个Table设置了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继承,而是在models文件夹中设置一个名为的文件:
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; }
}
这是最佳做法还是应该使用Identity Class?这有关系吗?
答案 0 :(得分:2)
为什么你认为你会这样做?
由于提供了ApplicationDbContext,您不会继承任何您尚未执行的操作。
在某些情况下添加第二个上下文可能有意义,但是您可能希望访问Identity字段,如果您使用的是其他上下文,则可能会遇到上下文一致性问题。
而且,FYI,你没有把你的DbSet放在ApplicationDbContext的构造函数中。