c# - 使用 EF Core 的 Visual Studio 2017 在迁移之前/之后更改 mdf 文件的本地数据库默认位置

标签 c# entity-framework-core visual-studio-2017 entity-framework-migrations

我的问题标题可能需要帮助。所以这里有更多细节。

在 VS2015 中,当我使用代码优先迁移创建数据库时,完成我的第一次迁移后,我可以通过转到 App_Data 文件夹并单击 MDF 文件来在 VS 中查看数据库。然后它将在服务器资源管理器中打开。

但是,在 VS2017 中,我不再有 App_Data 文件夹,当我进行第一次迁移时,我花了一些时间来找出我的 MDF 文件所在的位置。

如果你不知道这里是我用来找到它的步骤:

完成添加迁移和更新数据库后。

转到查看->SQL Server 对象资源管理器

在 SQL Server 下查找 (localdb)\MSSQLLocalDB->Databases->您的数据库名称应该显示在您的 appsettings.json 连接字符串中。可能以 aspnet-[数据库名称]-[一串数字和字母] 开头

我右键单击此数据库并转到属性。 “当前连接参数”下是 MDF 文件的路径。

当前位置是“C:/用户/用户名”

所以我的问题是如何将其设置为不同的默认位置?我希望我的 MDF 文件显示在数据文件夹或项目文件夹中的类似文件夹中。

如果有人问过这个问题。抱歉,我尝试改写我的问题大约 20 次,以确定是否有人已经问过它。如果这个问题已经以我不熟悉的方式被问到,我会很快删除这个问题。

最佳答案

好的,那么对于 Entity Framework Core,它涉及的更多一些。您可以在 Visual Studio(或 Sql Management Studio)的 SQL Server Object Explorer 中打开您的数据库,然后使用 SQL 查询在您需要的位置创建数据库。

create database test on (name='test', filename='c:\Projects\test.mdf');

然后像通常在连接字符串中那样使​​用 (LocalDb) 引用它:

appsettings.json

{
    "ConnectionStrings": {
        "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=test;Trusted_Connection=True;MultipleActiveResultSets=true"
    }
}

然后这个测试就正确运行了

Program.cs

using System;
using System.IO;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);

            IConfigurationRoot configuration = builder.Build();

            var optionsBuilder = new DbContextOptionsBuilder();

            optionsBuilder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));

            var context = new DbContext(optionsBuilder.Options);

            context.Database.EnsureCreated();
        }
    }
}

所以您仍在使用同一台服务器,但您将数据库放在您想要的文件夹中。

在行动中: enter image description here

关于c# - 使用 EF Core 的 Visual Studio 2017 在迁移之前/之后更改 mdf 文件的本地数据库默认位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43709499/

相关文章:

c# - ViewModel MVC 5 使用 2 个类创建, Controller 使用它

c# - 使用 CaSTLe Windsor 注入(inject)日志依赖

asp.net-core - 原始 SQL 如何针对 Entity Framework Core 上下文运行?

c++ - 查找所有 move 构造函数和 move 赋值运算符(特别是那些没有 'noexcept' 的)

angular - 通过 Visual Studio Community 2017 在 Firefox 中调试 Angular 7 应用程序

visual-studio-2015 - Visual Studio 2017/IIS Express : Unable to connect to the configured development Web server

c# - Automapper,我们可以看看它是如何映射对象的吗?

c# - 发布 Azure Webjob 时缺少程序集 CS0234 WebJobs、CS0246 QueueTriggerAttributes

asp.net - 无法创建类型为 '[DBContext' s Name]' 的对象。对于设计时支持的不同模式

c# - EF核心: how to share foreign key properties between several zero/one-to-many relationships