ASP .NET - MVC 5 - 实体框架 - 代码优先 - 表单身份验证

瑞克

我继承了一个使用代码优先方法创建的 MVC 5 项目。该项目具有用于身份验证/授权的所有类(我们在这里称它们为 A/A)(AccountController.cs、ManageController.cs 等)。它还在 References 文件夹下包含 A/A 所需的所有引用(如 Microsoft.AspNet.Identity.Core 等),但 A/A 没有实现,并且 web.config 说:

  <system.web>
    <authentication mode="None" />​

我改为:

   <authentication mode="Forms">
      <forms loginUrl="~Account/LogIn" timeout="1880" />

现在它带我进入登录页面等。

我卡住的地方是自动生成的 A/A 代码指的是 ApplicationDbContext(例如:在 IdentityModels.cs 中),以及处理用户输入数据等屏幕的 webapp 的功能部分,通过访问数据库车辆数据库上下文。

在 web.config 中有一个名为 VehicleDBConnection 的 SQL Server 连接,A/A 应该使用相同的上下文和连接,因此在 ApplicationDbContext 的构造函数中,我将基类设置为指向连接:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("name=VehicleDBConnection", throwIfV1Schema: false)
    {
    }

在这一点上,我检查了数据库并且不支持 A/A,我的意思是没有像 dbo.AspNetUsers 之类的表。所以如果我尝试创建一个用户,错误页面会显示“无效的对象名称 'dbo.AspNetUsers'”

我尝试按如下方式为 A/A 生成表,但我收到错误 b/c 仍然有 2 个上下文:

PM> Enable-Migrations 在程序集中发现不止一种上下文类型

我更喜欢只有 1 个上下文,但如果这意味着登录自动生成的代码发生重大变化,最好保留 2 个单独的上下文,只要它们指向同一个连接。

如何将自动生成的 A/A 支持数据库表、存储过程等自动生成到现有数据库中,而不影响其他应用程序类的迁移?

先感谢您,

瑞克

阿卜杜拉赫曼·阿尔哈穆迪

您可以通过使 VehicleDBContext 从 IdentityDbContext 继承并将自定义 DbSet 从 ApplicationDbContext 移动到它(如果有),然后相应地更新 Startup.cs 来简单地拥有一个上下文。

如果您希望保留两个上下文,请使用 -ContextTypeName 命令开关,如下所示:

1) Enable-Migrations -ContextTypeName Namespace.ApplicationDbContext

这将创建一个 Configuration.cs 文件,重命名类(或更改为不同的命名空间)

2) Enable-Migrations -ContextTypeName Namespace.VehicleDbContext

然后,无论何时为任一上下文添加新迁移,请使用 -ConfigurationTypeName 指定配置文件:

Add-Migartion [NAME] -ConfigurationTypeName [Fully-qualified configration file name]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP.NET MVC 5,通过表单身份验证使用ADMembershipProvider,向我显示了始终登录

在ASP.NET MVC5中使用自定义登录进行表单身份验证

ASP.NET 5 MVC 6中没有实体框架的身份验证和授权

在 ASP.NET MVC 5 中使用实体框架代码优先添加涉及引用 ApplicationUser 的实体的迁移问题

具有表单身份验证的ASP.NET MVC和具有基本身份验证的WebApi

在ASP.NET MVC中隐藏默认表单身份验证URL

ASP.NET MVC不能与表单身份验证一起使用

自定义ASP.NET MVC表单身份验证

保护ASP.NET MVC4中的视图:表单身份验证

StringLength vs MaxLength使用实体框架EF代码优先将ASP.NET MVC属性

在ASP.Net MVC项目上设置实体框架(代码优先)的问题

在ASP.NET MVC项目中使用实体框架代码优先时登录失败错误

如何使用代码优先的 ASP.NET MVC 和实体框架导入存储过程

asp.net和asp.net MVC之间的表单身份验证有区别吗?

如何在ASP.NET MVC 5和身份(实体框架优先)中将用户链接到另一个用户

ASP.NET MVC 5实体框架-关系

asp.net身份通过链接/ URL进行身份验证asp.net mvc 5

使用模型优先的ASP.NET MVC 5身份

ASP.NET MVC默认身份模型与自己的实体框架代码合并,首先是mssql数据库

带有表单身份验证的ASP .NET Web表单的MFA提供程序

实体框架代码优先,MVC,SqlException

MVC 5表单身份验证将User.Identity.Name的null调整为null

Asp.net中的表单身份验证超时单位是什么?

如何在ASP.NET中实施表单身份验证

Asp.Net Core-最简单的表单身份验证

使用 asp.net 表单身份验证的单点登录不起作用

如何在Postman中使用ASP.NET表单身份验证

ASP.NET表单身份验证-不重定向到任何页面

ASP .NET C#MVC 5代码优先外键属性/列名称