使用EF Core的Visual Studio 2017在遷移之前/之後更改mdf文件的本地數據庫默認位置

c# ef-migrations entity-framework-core visual-studio-2017

我可能需要幫助我的問題的標題。所以這裡有更多細節。

在VS2015中,我在使用代碼優先遷移創建數據庫時,在完成第一次遷移後,我可以通過轉到App_Data文件夾並單擊MDF文件來查看VS中的數據庫。然後它將在Server Explorer中打開。

但是,在VS2017中,我不再擁有App_Data文件夾,當我第一次遷移時,需要花費一些工作才能找到我的MDF文件所在的位置。

如果你不知道這裡是我用來找到它的步驟:

在執行add-migration和update-database之後。

轉到View-> SQL Server對象資源管理器

在SQL Server下找你(localdb)\ MSSQLLocalDB-> Databases->你的數據庫的名稱應該顯示在你的appsettings.json連接字符串中。可能從aspnet- [db name]開始 - [一堆數字和字母]

我右鍵單擊此數據庫並轉到屬性。在“當前連接參數”下,是MDF文件的路徑。

當前位置是“C:/ user / username”

所以我的問題是如何將其設置為不同的默認位置?我希望我的MDF文件顯示在我的項目文件夾中的Data文件夾或類似文件中。

如果問過這個問題。我道歉,我試著重寫我的問題約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();
        }
    }
}

所以你仍然使用相同的服務器,但是你將數據庫放在你想要的文件夾中。

在行動: 在此處輸入圖像描述



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow