實體框架核心使用Windows服務

c# entity-framework-core

目前正在使用EF Core為我的數據訪問層構建一個多疲勞的應用程序,我覺得我遇到了問題並且我不是100%肯定我現在可以使用它。

基本上我將我的應用程序設計為以下組件

  • 窗戶裝配
  • asp.net mvc核心網絡應用程序
  • Windows服務x2
  • 單元測試

在良好的設計中,我將盡可能多地放入我的程序集中,以便盡可能多地重用它,但這是我遇到問題的地方。我目前無法在我的單元測試應用中使用EF。

我目前正在重寫OnConfiguring以設置數據庫連接字符串,但是當我嘗試在單元testI中使用上下文時,我不斷收到以下異常消息:“Instance failure”

我的上下文現在很簡單,只有一個實體,如下所示:

public partial class CdiContext : DbContext
{
    private string ConnectionString { get; set; }
    private bool IsService { get; set; }
    public CdiContext(string connectionString, bool isService)
    {
        ConnectionString = connectionString;
        IsService = isService;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(ConnectionString);
    }

    public DbSet<Region> Regions { get; set; }
 }

為了排除單元測試作為問題,我還創建了一個簡單的控制台應用程序,甚至它拋出相同的異常,所以我真的迷失瞭如何繼續。

 CdiContext context =  new CdiContext(@"Data Source=localhost\\SQLEXPRESS;Initial Catalog=herp-interface;Persist Security Info=True;User ID=sa;Password=herpaderp;Pooling=true", true);
 var regions = context.Regions.ToList();

 Console.ReadLine();

問題是,除了ASP.NET核心MVC應用程序之外,我無法在任何類型的項目中使用Windows程序集中的EF上下文,這是我做錯了什麼?

熱門答案

當您從aspnetcore應用程序複製/粘貼連接字符串並且仍然有轉義反斜杠時,會發生此錯誤 - “實例失敗”

在ASP.Net Core之外,即控制台/ Windows服務等,app.config中的連接字符串不需要轉義反斜杠。

例如

 <add name="DefaultConnection" connectionString="Server=localhost\\SQLEXPRESS...

而不是

 <add name="DefaultConnection" connectionString="Server=localhost\SQLEXPRESS...


Related

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