簡體   English   中英

通過.Net Core Console應用程序從Entity Framework Core 1.x連接到localdb

[英]Connecting to localdb from Entity Framework Core 1.x via a .Net Core Console Application

如何在Visual Studio中使用.NET Core 1.x控制台應用程序中的Entity Framework Core 1.x? 我已經嘗試過我從ASP.NET MVC Core 1.x開發中使用的工作流和命令,並且我遇到了與localdb的連接錯誤。

如何在控制台應用程序中使用localdb與在ASP.NET MVC Core 1.x應用程序中工作不同?

背景

幾次成功使用ASP.NET MVC Core 1.x和Entity Framework Core 1.x之后,我需要創建一個簡單的.NET Core Console應用程序來完成一些繁重的工作(將XML加載到新數據庫中,創建與松散匹配的表格XML的結構)。

我用NuGet安裝

  • Microsoft.EntityFrameworkCore.Design(1.1.2)
  • Microsoft.EntityFrameworkCore.SqlServer(1.1.2)
  • Microsoft.EntityFrameworkCore.Tools(1.1.1)

我用DbSets創建了一個DbContext。 我添加了一個OnConfiguring()方法並對連接字符串進行了硬編碼,就像我在網上的代碼示例中找到的那樣。 我的DbContext看起來像這樣:

public class ApplicationDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Server=(localdb)\\mssqllocaldb;Database=MyXmlExport;Trusted_Connection=True;MultipleActiveResultSets=true");
    }

    public DbSet<Author> Authors { get; set; }
    public DbSet<Thread> Threads { get; set; }
    public DbSet<Post> Posts { get; set; }
}

我從一個有效的ASP.NET MVC Core 1.x應用程序的appsettings.json中獲取連接字符串,將數據庫名稱更改為簡單的名稱(“MyXmlExport”)。

我能夠創建一個初始遷移。

當我嘗試使用我習慣的工作流程時,即調用:

update-database

我收到以下錯誤:

“建立與SQL Server的連接時發生與網絡相關或特定於實例的錯誤。未找到服務器或無法訪問服務器。驗證實例名稱是否正確以及SQL Server是否配置為允許遠程連接。(提供程序: SQL網絡接口,錯誤:50 - 發生本地數據庫運行時錯誤。指定的LocalDB實例名稱無效。“

我可以通過Sql Server對象資源管理器連接到localdb實例。 我嘗試手動創建MyXmlExport數據庫,希望這會減少至少一個潛在的問題。 但是,當在Console應用程序的上下文中使用時,Visual Studio的工具似乎無法訪問數據庫。

完整錯誤堆棧:

完整的錯誤堆棧

@表示您使用的是逐字字符串文字。 您不應該在服務器和實例名稱之間轉義\\

我不知道它是否有助於鮑勃,但我會考慮以下幾點:

嘗試停止LocalDb實例 - 使用枚舉實例

SqlLocalDb i 

從cmd線...

然后試試

SqlLocalDb stop <INSTANCE NAME>

看看它是否對它有任何影響。

錯誤的味道暗示了連接字符串問題,因此值得檢查MDF文件的路徑是否適合您訪問它的每種方式。 我以前在處理LocalDb連接字符串時遇到了問題。

可能沒有關系,但無論如何我都會把它扔進去,如果你在SSMS中附加了LocalDb MDF,SSMS會在你拆卸它時刪除MDF上的文件權限,這意味着你可能需要重置MDF和LDF的權限分離后的文件。 就像我說的 - 聽起來不是這個問題,但可能會觸發你的思維模式。

暫無
暫無

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

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