繁体   English   中英

Database.EnsureCreated似乎不是在创建数据库(xamarin.forms)

[英]Database.EnsureCreated does not seem that it's creating a database (xamarin.forms)

我正在使用EntityFrameworkSqlite作为数据库制作一个简单的应用程序,以将该人添加并保存到数据库中并将其添加到ListView或删除它。

我有一个Db类,在构造方法中,我使用了称为

Database.EnsureCreated()

建立我的数据库 在MainPage.xaml.cs中,我创建了Db class(db)的实例,我想获取数据库中的所有Workers表并将其作为ListView的ItemSource传递。 我也在OnAppearing()方法中执行这些操作,以在启动时显示我的ListView项目,但我遇到此异常错误:

Microsoft.Data.Sqlite.SqliteExceptions:'SQLite错误1:'没有这样的表:Workers'。

(请参见下图)

在此处输入图片说明

看来Database.EnsureCreated()并未创建我的数据库。 也许它创建了我的数据库,但是由于某些原因而无法创建表,我想知道那些原因

这是我的Db类:

在此处输入图片说明

这是我的db_path: Android

        string FileName = "Workers.sqlite";
    string FileLocation = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
    string db_path = Path.Combine(FileLocation, FileName);

iOS

            string FileName = "Workers.sqlite";
        string FileLocation = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "..", "Library");
        string db_path = Path.Combine(FileLocation, FileName);

那么数据库和表创建有什么问题?

我只是在这些行中添加了using关键字,但它意外地修复了它。

(我还删除了一些db_path变量,并通过从App类中获取了它,使db_path源代码更干净,更流畅)。

现在,代码如下所示:

        using (Db db = new Db(App.db_path))
        {
            List<Worker> AllWorkers = db.Workers.ToList();
            WorkersListView.ItemsSource = AllWorkers;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM