多个数据库文件/上下文ASP.NET MVC

本文关键字:ASP NET MVC 上下文 数据库 文件 | 更新日期: 2023-09-27 17:59:09

我的理解是,上下文通过web.config中指定的连接字符串连接到数据库。当我创建新的支架时,它会使用新的连接字符串创建新的database.mdf文件。我来自rails活动记录,有一个数据库和一个连接字符串。那么,为什么asp.net的做法不同呢?为什么有多个数据库文件?

此外,我还将用户模型的连接字符串更改为我的默认站点数据库Toolsite,以简化操作,并将用户与其他用户放在同一个数据库中-

 public ApplicationDbContext()
        : base("Toolsite")
    {
       System.Diagnostics.Debug.Write(Database.Connection.ConnectionString);
    }

这导致了CCD_ 1异常,即使数据库"ToolSite"中存在AspNetUsers表。服务器代码中是否还有其他部分需要更改?

多个数据库文件/上下文ASP.NET MVC

默认的MVC项目脚手架一直是我最讨厌的。当你用auth创建一个新的MVC项目时,你会得到一个用户模型和一个应用程序上下文来连接它。从一个方面来说,这很好,因为它可以让你在没有额外配置的情况下立即运行项目。然而,他们愚蠢地决定将用户模型和应用程序上下文放在同一个.cs文件中,这让不熟悉设置的开发人员感到困惑,以为两者有内在的联系。

事实上,MVC应用程序被设计为具有单个上下文,并且您实际上应该将模型添加到由scaffold创建的现有上下文中,而不是创建一个新的、单独的上下文。拥有多个上下文的唯一原因是,如果您确实在处理多个数据库,那么,仅仅是因为您除了处理特定于应用程序的数据库之外,还处理现有数据库。换句话说,您应该只有一个与迁移相关的上下文,然后您可能有也可能没有在数据库优先的基础上操作的其他上下文。一旦你明白了这一点,就不会对脚手架项目感到困惑。