![](/img/trans.png)
[英]How to use Database.Migration() after Database.EnsureCreated() EF Xamarin.Forms
[英]Database.EnsureCreated does not seem that it's creating a database (xamarin.forms)
我正在使用EntityFramework和Sqlite作為數據庫制作一個簡單的應用程序,以將該人添加並保存到數據庫中並將其添加到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.