将MDF与entityframework Core一起使用

时间:2018-06-19 05:12:26

标签: c# .net-core entity-framework-core scaffolding

我试图弄清楚如何使用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

1 个答案:

答案 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;";