1

私の Windows Phone 8.1 アプリの UWP バージョンを作成しています。このアプリは読み取り専用の SQLite データベースを使用しており、UWP アプリで Entity Framework 7 を使用してアクセスしようとしています。

アプリの最初のページでデータベースを問題なく読み取ることができます。ただし、行の 1 つをタップしてその行の詳細ページ (いくつかの子レコードをフェッチする場所) に移動すると、データベースにアクセスするコードが働いているページ。より奇妙な部分は、デバッガーを使用してコードをステップ実行すると、機能することです。

アプリで Template10 も使用していますが、DB アクセス コードを Template10 ViewModel に配置するか、ビューのコード ビハインドに直接配置するかに違いはありません。

これは私のクラスのOnConfiguringメソッドです:DbContext

    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