我正在开发一个ASP.NET MVC 5应用程序,该应用程序依赖于使用Entity Framework 6的Model First方法。我已经使用我的.edmx生成了我的数据库,一切正常。
现在,我想将ASP.NET Identity添加到我的数据库中,但我不知道应该使用哪种方法。我应该使用Code First和Migration一起添加ASP.NET身份吗?
我想维护我的.edmx,以便我可以在以后更新我的数据库,以及启用迁移,以便我之后也可以修改我的ASP.NET身份实体。
答案 0 :(得分:1)
现在推荐的方法是使用单独的数据库进行身份验证。此方法在ASP.NET标识中强制实施。虽然您可以以某种方式(迁移或手动)将ASP.NET身份表添加到您的应用程序数据库中,但我不鼓励您这样做,因为您只会让您的生活更加艰难,因为您将不再使用框架的预期用途
要做的是保留脚手架的ASP.NET Identity DbContext,并使用某些字段(例如电子邮件地址字段)将ASP.NET Identity Users与您的应用程序用户实体进行匹配。根本的想法是,您将使用相同的身份数据库来针对OAuth(Microsoft Live,Google,Facebook等)对用户进行身份验证,从而为您提供统一的身份验证方式。
答案 1 :(得分:0)
凭借对asp.net mvc身份的一些经验,我不得不说代码优先方法自然意味着(通过约定)。你必须先应用一些黑客来与数据库一起使用它。如果你在网上搜索,你会发现所有类型的用户派生技术,首先将它与数据库一起使用
我使用带有两个连接字符串和单个数据库的EF的数据库第一种方法使用了asp.net身份。我通过将用户注册到包含我的其他表的主数据库来手动传输我创建的所有用户表
<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="data source=localhost;initial catalog=LocalLoanDb;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
所以这样,defaultconnection用于身份表,我使用其他连接字符串连接我的项目库。所以在身份框架中没有任何架构变化,我设法在我的应用程序中非常愉快地使用它。