c# – 将ASP.net Identity 2.0连接到已存在的数据库
我正在使用vs2013并使用asp.net mvc 5来创建我的Web应用程序.为了进行个人身份验证,我正在使用Identity 2.0.
当我创建我的Entitymodel.edmx时,它会在web.config中自动为我的数据库生成新的连接字符串,如下所示: <add name="myEntities" connectionString="metadata=res://*/Models.mEntity.csdl|res://*/Models.mEntity.ssdl|res://*/Models.mEntity.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)v11.0;attachdbfilename=|DataDirectory|Shop.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> 我认为Identity使用代码优先方法来生成mak数据库并连接到另一个连接字符串(DefaultConnection),如: <add name="DefaultConnection" connectionString="Data Source=(LocalDb)v11.0;AttachDbFilename=|DataDirectory|aspnet-testauthentication-20151116011628.mdf;Initial Catalog=aspnet-testauthentication-20151116011628;Integrated Security=True" providerName="System.Data.SqlClient" /> 因此,当我第一次运行项目时,它会创建名为的新.mdf文件
并在其中创建表.但我想要的是让Identity连接到我已创建的名为:Shop.mdf的数据库并在其中创建它的表.所以我将我的连接字符串名称放在IdentityModel.cs中的ApplicationDbContext类中,如下所示: public ApplicationDbContext() : base("myEntities",throwIfV1Schema: false) { } 但我得到以下错误:
那么这样做的恰当和正确的方法是什么? 非常感谢 更新:我在现有数据库中使用相同的名称创建了Identity的表,并使用DefaultConnection连接到现有数据库,现在我收到此错误:
为什么当有数据库甚至表中的时候,身份会尝试创建数据库? 方案: 第2点:我遇到的问题:我不知道我的问题的原因是什么,但我做了以下步骤并解决了问题: >从model.edmx中删除所有表 如果您需要添加一些其他属性以及Identity的现有属性,如name,City和….执行以下步骤并运行项目并注册: >在IdentityModel.cs文件中将属性添加到ApplicationUser类中: 公共类ApplicationUser:IdentityUser var user = new ApplicationUser(){UserName = model.Email,Email = model.Email,Adress = model.Adress}; 干杯 解决方法
你有两个选择.您可以让Identity占用使用Code First设置的单独数据库,然后通过第二个上下文使用现有数据库,也可以手动创建现有数据库中Identity需要的表.您将无法自动生成它们.
使用第一个选项,您将无法在源自现有数据库的任何Identity实体和实体之间创建关系,即无导航属性和外键.您仍然可以将用户ID存储在标准列中,然后手动使用它来从Identity上下文中查找相应的用户. 使用第二个选项,您只需要知道需要创建哪些表.为此,您可以允许通过Code First生成表,然后只需将架构移动到现有数据库,然后再删除特定于Identity的上下文并更新EDMX. 此外,为了它的价值,你应该避免在这一点上使用EDMX.它已被弃用,并且将从EF7中删除对它的所有支持. EF团队承诺暂时继续支持EF6安全补丁和漏洞修复,但你仍然只是推迟了不可避免的事情.尽管名称看似矛盾,但Code First可以与现有数据库一起使用,这绝对是使用EF处理现有数据库的首选方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |