Attualmente sto sviluppando un'applicazione multi-stanco utilizzando EF Core per il mio livello di accesso ai dati e mi sento come se stessi correndo verso un problema e non sono sicuro al 100% di poterlo utilizzare al momento.
In sostanza sto progettando la mia applicazione nei seguenti componenti
in una buona progettazione sto mettendo tanto del mio dominio nel mio assembly in modo da poterlo riutilizzare il più possibile, ma è qui che mi imbatto in problemi. Al momento non riesco a utilizzare l'EF nella mia app di test dell'unità.
Attualmente sto eseguendo l'override di OnConfiguring per impostare la stringa di connessione al database, ma quando tento di utilizzare il contesto in un'unità testI viene continuamente visualizzato il seguente messaggio di eccezione: "Errore dell'istanza"
Il mio contesto è semplicemente sporco in questo momento e ha solo un'entità e appare come segue:
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; }
}
Nel tentativo di escludere il test unitario come problema ho anche creato una semplice applicazione per console e anche questa lancia la stessa eccezione, quindi sono davvero perso su come procedere.
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();
La domanda è: cosa sto facendo che è sbagliato dove non sono in grado di utilizzare un contesto EF da un assembly di Windows in qualsiasi tipo di progetto oltre a un'app di ASP.NET Core MVC?
Questo errore - " Errore di istanza" - si verifica quando si copia / incolla la stringa di connessione dall'app di aspnetcore e si hanno ancora barre rovesciate di escape .
Al di fuori di ASP.Net Core, ovvero un servizio console / windows, la stringa di connessione in app.config non ha bisogno di sfuggire alle barre inverse.
PER ESEMPIO
<add name="DefaultConnection" connectionString="Server=localhost\\SQLEXPRESS...
piuttosto che
<add name="DefaultConnection" connectionString="Server=localhost\SQLEXPRESS...