Sto cercando di capire come connettermi a un file .mdf usando il core di entityframework. Ho trovato una risorsa su come collegarmi a uno qui Tuttavia non sembra funzionare. Ho creato un contesto semplice var usando il set di dati Northwind
public class Order
{
public int OrderId { get; set; }
public string CustomerID { get; set; }
public int EmployeeID { get; set; }
public DateTime OrderDate { get; set; }
// etc.
}
public class NorthwindContext : DbContext
{
public NorthwindContext(DbContextOptions options) : base(options) { }
public DbSet<Order> Orders { get; set; }
}
Ho creato una classe di test per tentare di connettersi al DB
public string NorthwindConnectionString = @"Data Source=.\SQLEXPRESS;
AttachDbFilename=C:\source\Astoot\RestEzCore.Tests\TestDB\NORTHWND.MDF;
Integrated Security=True;
Connect Timeout=30;
User Instance=True";
[TestMethod]
public void TestMethod1()
{
var optionsBuilder = new DbContextOptionsBuilder<NorthwindContext>();
//I've also tried UseSqlLite()
optionsBuilder.UseSqlServer(this.NorthwindConnectionString);
using (var context = new NorthwindContext(optionsBuilder.Options))
{
var orders = context.Orders.ToList();
Assert.IsTrue(orders.Any());
}
}
Tuttavia quando provo a eseguire i miei test ottengo un errore
si è verificato un errore specifico dell'istanza durante la creazione di una connessione a SQL Server. Il server non è stato trovato o non era accessibile. Verificare che il nome dell'istanza sia corretto e che SQL Server sia configurato per consentire le connessioni remote
modificare
Ho anche provato a spostare il mio MDF nella cartella degli utenti e connettermi usando questa stringa di connessione:
Data Source = (LocalDB) \ MSSQLLocalDB; DataBase = Northwind; Integrated Security = True; Connect Timeout = 30 "
Tuttavia, questo non sembra funzionare bene, ma costituisce un'eccezione
SqlException: impossibile aprire il database "Northwind" richiesto dal login. L'accesso non è riuscito. Accesso non riuscito per l'utente "MyUser"
C'è qualcosa di sbagliato nella mia stringa di connessione?
Non riesco a capire come utilizzare un MDF con entityframework
Ho fatto alcune indagini, e si è scoperto che stava restituendo un errore fittizio perché il DB Northwind è stato creato da SQL Server 2000 e sto eseguendo SQL Server 2016, quindi ho creato un DB di esempio e l'ho usato come MDF.
Ora la mia stringa di connessione è così:
public static string MDF_Directory
{
get
{
var directoryPath = AppDomain.CurrentDomain.BaseDirectory;
return Path.GetFullPath(Path.Combine(directoryPath, "..//..//..//TestDB"));
}
}
public string astootConnectionString = "Data Source=(LocalDB)\\MSSQLLocalDB; " +
"AttachDbFilename="+ MDF_Directory + "\\Astoot.mdf;" +
" Integrated Security=True; Connect Timeout=30;";