【问题标题】:How can I make Visual Studio use my database instead of the .mdf file located in App_Data folder in ASP.NET MVC project?如何让 Visual Studio 使用我的数据库,而不是 ASP.NET MVC 项目中 App_Data 文件夹中的 .mdf 文件?
【发布时间】:2020-07-21 06:17:30
【问题描述】:

我正在 Visual Studio 2019 中创建一个 ASP.net Web 应用程序 (.NET Framework),我选择了 ASP.NET MVC 模板并使用了个人用户帐户选项。另一方面,我有一个自己创建的 SQL Server 数据库(我们称之为DemoDb)。

Visual Studio 创建模板后,在解决方案资源管理器的App_Data 文件夹下,创建.mdf 数据库文件,其中还包括AspNetUsersAspNetUserRoles 等表。

我想要做的是,将所有身份验证表转移到我的DemoDb 数据库并让 Visual Studio 使用这些表。

我在互联网上做了很多研究,包括 StackOverFlow。我编辑了web.config 文件连接字符串条目以指向我的数据库,但它不起作用。

有没有人会一步一步指导我实现我的目标?非常感谢。

【问题讨论】:

  • 如果您在自己的数据库中重新创建身份表并更改连接字符串以使用该数据库,那应该可以提供您想要的。当你说它不起作用时,究竟是什么问题?你能显示你的连接字符串吗(不要放真实的凭据)
  • web.config 中的连接字符串DefaultConnection
  • 我得到“不支持关键字:“元数据”错误。错误发生在第 155 行:var result = await UserManager.CreateAsync(user, model.Password); 在 AccountsController.cs 中。我有提到我也使用 EF Database First。

标签: c# sql-server asp.net-mvc forms authentication


【解决方案1】:

第一步是将身份表复制(传输)到您的主数据库,然后在您的项目中找到“IdentityDbContext”。它应该在“Models\IdentityModel.cs”中。 然后找到这段代码:

public ApplicationDbContext() : base("DefaultConnection")

并将“DefaultConnection”更改为您的连接字符串。 最好在首次编译之前完成这项工作。

【讨论】:

  • 感谢您的回答。如何复制身份表?只是复制粘贴还是别的什么?
  • 如果您的项目是 Code-First,只需执行我的解决方案,然后添加迁移和更新数据库。但是,如果您的项目之前已编译并且您有一些数据,那么最好使用 SSMS(Sql Server Management Studio)从带有 shema 和数据的表中生成脚本,然后在您的主数据库上运行它。
  • 我自己解决了这个问题。我从 web.config 文件中删除了 DefaulConnection 条目。我在自己的数据库上重新创建了 Identitiy 表。最后我在 web.config 文件中创建了这个条目:<add name="AuthDbContext" connectionString="Server=.;Database=DemoDb;Trusted_Connection=True;" providerName="System.Data.SqlClient" /> 并更改了 IdentitiyModel.cs 文件以指向我的 AuthDbContext 条目。谢谢大家。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 2010-10-06
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 2010-11-25
相关资源
最近更新 更多