Joh*_*ean 7 c# asp.net asp.net-mvc entity-framework
我应该在免费声明之前说这是我对ASP.NET开发的新手并不真正理解数据库上下文,尽管花费了最后一小时阅读文档.当我构建我的ASP.NET MVC 5应用程序时,我选择了单独的用户帐户身份验证.Visual Studio创建了一个名为的文件IdentityModels.cs,并在其中定义了一个ApplicationUser类和一个ApplicationDbContext类.
我做了一些开发工作,我的CRUD控制器ApplicationDbContext用来与数据库通信,在每个控制器上都有这个私有属性:
private ApplicationDbContext db = new ApplicationDbContext();
在控制器操作中,我然后执行以下操作:
return View(db.Trains.ToList());
我想整理这个数据库上下文,但我需要先了解它.我的主要问题是:
ApplicationDbContext类替换定义的类IdentityModels.cs吗?ApplicationDbContext类从派生IdentityDbContext<ApplicationUser>,这是否意味着我应该有一个由Visual Studio提供我的用户身份验证的东西,我自己的代码单独的数据库环境?我认为我的最终目标是使用我自己的数据库上下文,DatabaseContext该上下文被用于我的所有控制器继承的基本控制器中.然后我只有一个地方实例化数据库上下文,而不是在每个控制器中.
谁知道,我可能在想这个错误的方法.似乎每个人都有自己喜欢的方式来解决这个问题.
谢谢!
是否可以仅为我的整个应用程序使用一个数据库上下文,就像我现在正在做的那样?
ApplicationDbContext控制器的私有字段,并且每个请求创建和处理控制器 - ApplicationDbContext将被创建和处理根据要求.我可以用自己的身份替换IdentityModels.cs中定义的ApplicationDbContext类吗?
UserStore接收DbContext的内容var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(new CustomDbContext("connection")));
将工作.您仍然必须确保它ApplicationUser是自定义上下文中的实体.当然你也可以覆盖/替换ApplicationUser.
ApplicationDbContext类派生自IdentityDbContext,这是否意味着我应该为Visual Studio提供的用户身份验证提供单独的数据库上下文,以及我自己的代码?
默认情况下,Asp.Net Identity会为您生成新的数据库,并ApplicationDbContext配置为使用此数据库.您可以将您的身份验证相关实体存储在任何其他数据库中,您只需要确保所有相关表都在那里.您还可以扩展此数据库以包括您在应用程序中使用的其他表,以便您可以全部使用相同的上下文.
PS: ApplicationDbContext不必实现IdentityDbContext<ApplicationUser>,扩展默认也DbContext可以工作(如果已经生成了Db,则必须更新它\使用代码迁移以使以下工作):
 public class ApplicationDbContext : DbContext 
  {
     public ApplicationDbContext()
         : base("DefaultConnection")
     {
     }
     public static ApplicationDbContext Create()
     {
         return new ApplicationDbContext();
     } 
  }
| 归档时间: | 
 | 
| 查看次数: | 15167 次 | 
| 最近记录: |