【问题标题】:How can ASP.NET Identity be used with a Model First approach? [duplicate]ASP.NET Identity 如何与 Model First 方法一起使用? [复制]
【发布时间】:2016-01-09 17:18:52
【问题描述】:

我正在开发一个 ASP.NET MVC 5 应用程序,该应用程序依赖于使用 Entity Framework 6 的模型优先方法。我已经使用我的 .edmx 生成了我的数据库并且一切正常。

现在,我想将 ASP.NET Identity 添加到我的数据库中,但我不知道应该使用哪种方法。我应该使用带有迁移的代码优先添加 ASP.NET 身份吗?

我想维护我的 .edmx,以便之后可以更新我的数据库,并启用迁移,以便之后我也可以修改我的 ASP.NET 身份实体。

【问题讨论】:

标签: c# asp.net sql-server asp.net-mvc entity-framework


【解决方案1】:

现在推荐的方法是使用单独的数据库进行身份验证。这种方法在 ASP.NET Identity 中强制执行。虽然您可以以某种方式(迁移或手动)将 ASP.NET 标识表添加到您的应用程序数据库中,但我不鼓励您这样做,因为您只会让您的生活更加艰难,因为您将不再处于框架的预期用途中.

要走的路是保留脚手架的 ASP.NET 身份 DbContext 并使用某些字段(例如电子邮件地址字段)将 ASP.NET 身份用户与您的应用程序用户实体匹配。基本思想是,您将使用相同的身份数据库针对 OAuth(Microsoft Live、Google、Facebook 等)对用户进行身份验证,从而为您提供统一的身份验证方式。

【讨论】:

  • 确实会更整洁,但我订阅了 Azure,而且每个 SQL Server 数据库都要花一些钱。考虑到这一点,您认为它仍然是我的最佳选择吗?
  • @bbougot 我同意我面临同样的情况,微软很聪明​​...... ) 恐怕只有你能知道什么最适合你的情况在同一个数据库中。它不会在一夜之间杀死你
【解决方案2】:

凭借对 asp.net mvc 身份的一些经验,我不得不说它自然意味着(按照惯例)代码优先方法。您必须先应用一些技巧才能将其与数据库一起使用。如果你在网上搜索,你会发现各种用户派生技术首先将它与数据库一起使用

我已将 asp.net 身份与数据库优先方法一起使用,使用 EF 与两个连接字符串和单个数据库。我手动将通过注册用户创建的所有用户表转移到包含我其他表的主数据库中

<connectionStrings>

  <add name="DefaultConnection" connectionString="data source=localhost;database=LocalLoanDb;user id=sa;password=123456;" providerName="System.Data.SqlClient" />

  <add name="LocalLoanDbEntities" connectionString="metadata=res://*/Models.LoanDataModel.csdl|res://*/Models.LoanDataModel.ssdl|res://*/Models.LoanDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost;initial catalog=LocalLoanDb;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

这样,defaultconnection 是用于身份表的,我使用其他连接字符串来连接我的项目存储库。因此,在身份框架没有任何架构更改的情况下,我设法在我的应用程序中非常愉快地使用它。

【讨论】:

  • 身份的核心与 ef 无关,因此没有“自然”的方法。您引用的默认方法是实体框架命名空间。
猜你喜欢
  • 2015-08-01
  • 2019-08-30
  • 1970-01-01
  • 2015-07-26
  • 2011-08-25
  • 2014-09-06
  • 2017-11-16
  • 2019-11-02
  • 2016-12-30
相关资源
最近更新 更多