我正在构建我的第一个MVC 5 / Entity Framework应用程序 . 我使用数据库第一种方法从现有的SQL服务器中提取数据 . 现有的SQL数据库从单独的Web表单.net应用程序接收它的数据 .
接下来,新的MVC应用程序和现有的Web表单应用程序将共享数据库 .
我正在使用Identity在MVC应用程序中创建用户帐户 . 所以在这一点上,我的MVC应用程序中有2个数据连接 . 一个用于用户帐户,另一个用于现有SQL服务器 .
这是设置MVC项目的最佳方式吗?继续,我能从Web表单应用程序访问用户数据库吗?
我是新手,我想确保我正确设置 .
3 回答
您不需要两个数据库 - 您可以在现有数据库中创建标识表 .
ASP.Net Identity使用 Entity Framework Code First . 因此,在第一次运行应用程序之前,您希望更新与现有数据库相同的连接字符串,该数据库通常位于 ApplicationDbContext 内 .
如果您已经有两个单独的数据库并想要合并它们,则需要使用RedGate - SQL Compare和Data Compare等工具 .
合并两个数据库完全不是原始问题;如果你有问题,请提出另外一个问题 .
在数据库上运行此SQL脚本 .
使用DB First,更改连接字符串不会导致Identity 2.0在DB中创建表 .
CORRECTION: 我最初在身份模式下的数据库中拥有我的身份表,当我使用下面的注册新用户时,新表在dbo模式下写入我的数据库 .
您必须首先使用Code First创建一个虚拟项目,构建并运行项目,在Web浏览器中转到正在运行的应用程序,使用虚拟电子邮件和密码注册用户,这将导致实体FrameWork Code First(?)在虚拟数据库中创建所有Identity 2.0数据库表 . 然后,您需要将虚拟表导出到SQL脚本并将它们导入到要使用它们的现有数据库中 . 应该有5个表:AspNetUserRoles,AspNetRoles,AspNetUsers,AspNetUserClaims和AspNetUserLogins .
我有一个ADO.Net实体模型(.edmx文件)用于我的主要数据库模型,并为身份模型创建了另一个.edmx(我命名为:IdentityDbEntities) . 那时您应该从“DefaultConnection”更改连接字符串:
非常重要:在您的Web.config文件中,您必须添加一个您将在上面使用的额外连接字符串 . 看起来(我正在使用SQL Server Dev环境,因此您的连接字符串可能会发生变化):
DbName#里面的任何内容都会自定义 .