我试图弄清楚如何使用entityframework核心连接到.mdf文件。我找到了一个关于如何连接到here的资源但是它似乎并没有起作用。我使用Northwind数据集
创建了一个简单的var上下文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; }
}
我已经创建了一个测试类来尝试连接到数据库
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());
}
}
但是当我尝试运行测试时出现错误
建立与SQL Server的连接时出现特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及SQL Server是否配置为允许远程连接
修改
我还尝试将我的MDF移动到用户文件夹并使用此连接字符串进行连接:
Data Source =(LocalDB)\ MSSQLLocalDB; DataBase = Northwind; Integrated Security = True; Connect Timeout = 30&#34;
然而,这似乎不起作用,它会引发异常
SqlException:无法打开数据库&#34; Northwind&#34;登录请求。登录失败。 用户&#39; MyUser&#39;
的登录失败
我的连接字符串有问题吗?
我似乎无法弄清楚如何在实体框架中使用MDF
答案 0 :(得分:0)
我进行了一些调查,结果发现它返回了一个虚假错误,因为Northwind DB是从SQL Server 2000构建的,并且我正在运行SQL Server 2016,因此我创建了一个示例数据库并将其用作MDF。
现在我的连接字符串如下所示:
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;";