簡體   English   中英

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

[英]Visual Studio 2017 using EF Core change local database default location for mdf file before/after migration

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

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

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

如果你不知道這里是我用來定位它的步驟:

完成添加遷移和更新數據庫后。

轉到查看-> 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"
    }
}

然后這個測試正確運行

程序.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();
        }
    }
}

因此,您仍在使用同一台服務器,但您將數據庫放置在所需的文件夾中。

在行動: 在此處輸入圖片說明

您必須在連接字符串中使用AttachDbFileName ,例如:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(connectionString: @"data source=.;AttachDbFileName=d:\data\yourDBname.mdf ;initial catalog=yourDBname;persist security info=True;user id=sa;password=1234;MultipleActiveResultSets=True;App=EntityFramework");
            base.OnConfiguring(optionsBuilder);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM