如何在ABP框架中使用真正的DB与SQLite?

时间:2018-02-14 13:11:21

标签: c# sqlite asp.net-core xunit aspnetboilerplate

我正在使用Xunit编写测试用例并使用基于Asp.Net Core 2.0构建的ABP框架。我想连接到我的本地数据库而不是内存数据库,这样我就可以在运行测试用例时验证记录。

public static void Register(IIocManager iocManager)
{
    RegisterIdentity(iocManager);

    var builder = new DbContextOptionsBuilder<MyCompanyDbContext>();

    var inMemorySqlite = new SqliteConnection("Data Source=:memory:");
    builder.UseSqlite(inMemorySqlite);

    inMemorySqlite.Open();

    iocManager.IocContainer.Register(
        Component
            .For<DbContextOptions<MyCompanyDbContext>>()
            .Instance(builder.Options)
            .LifestyleSingleton()
    );

    new MyCompanyDbContext(builder.Options).Database.EnsureCreated();
}

所以为了连接我的本地数据库,我做了以下更改,但它给出了错误。我在其他地方的应用程序中使用相同的连接字符串,它工作正常。

var inMemorySqlite = new SqliteConnection("Server=.\\SQLEXPRESS; Database=MyLocalDb; Trusted_Connection=True;");

1 个答案:

答案 0 :(得分:0)

您正在尝试将非SQLite连接字符串与SqliteConnection对象一起使用。

如果意图是连接到实际的db,那么连接字符串应该引用实际的db文件

var optionsBuilder = new DbContextOptionsBuilder<MyCompanyDbContext>();
var connectionString = "Data Source=MyRealLocalDb.db"; //use actual path
optionsBuilder.UseSqlite(connectionString);

//...

参考Configuring a DbContext