1

我正在编写我的 Windows Phone 8.1 应用程序的 UWP 版本。此应用程序使用只读 SQLite 数据库,我正在尝试在 UWP 应用程序上使用 Entity Framework 7 来访问它。

我可以在应用程序的初始页面中很好地读取数据库。但是,一旦我点击其中一行导航到该行的详细信息页面(我在其中获取一些子记录),我得到一个异常,说没有配置数据库提供程序,即使访问数据库的代码与正在工作的页面。更奇怪的是,如果我使用调试器单步执行代码,它就可以工作。

我也在我的应用程序上使用了 Template10,但是无论我将数据库访问代码放在 Template10 ViewModel 中还是直接放在视图的代码隐藏中,都没有区别。

这是OnConfiguringDbContext班级的方法:

    protected async override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var assetsFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("Assets");
        optionsBuilder.UseSqlite($"Filename={Path.Combine(assetsFolder.Path, "joinbus.db")}");
    }

这是我在应用程序的初始页面上访问数据库的方式(始终有效):

    public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary<string, object> state)
    {
        using (var db = new JoinbusContext())
        {
            Lines = await db.Lines.ToListAsync();
        }
    }

这是我在详细信息页面上访问数据库的方式(仅在调试时有效):

    public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary<string, object> state)
    {
        var line = parameter as Line;
        using (var db = new JoinbusContext())
        {
            var origins = await db.LineOrigins.Where(lo => lo.Line.Id == line.Id)
                .Include(lo => lo.Origin).ToListAsync();
            LineOrigins = origins;
        }
    }

抛出的异常System.InvalidOperationException与消息"No database providers are configured. Configure a database provider by overriding OnConfiguring in your DbContext class or in the AddDbContext method when setting up services."

4

0 回答 0