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

时间:2019-08-27 07:23:55

标签: c#

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

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

的方法。

Database.EnsureCreated()

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

  

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

(请参见下图)

enter image description here

似乎Database.EnsureCreated()没有创建我的数据库。 也许它创建了我的数据库,但是由于某些原因却无法创建表,我想知道那些原因

这是我的Db类:

enter image description here

这是我的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);

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

1 个答案:

答案 0 :(得分:0)

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

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

现在代码如下:

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