為啥寫這篇帖子呢?其實是因為翻微軟的文檔中心偶然翻到的,於是就出於好奇就試試了,看看用著怎麼樣。 以前沒註意圖片,所以我今天發現的時候,顯示EF Core3.1支持standard2.0,於是就想試試UWP用著會不會出問題,之前有的網友說2.1的standard目前UWP用不了。 ef core具體 ...
為啥寫這篇帖子呢?其實是因為翻微軟的文檔中心偶然翻到的,於是就出於好奇就試試了,看看用著怎麼樣。
以前沒註意圖片,所以我今天發現的時候,顯示EF Core3.1支持standard2.0,於是就想試試UWP用著會不會出問題,之前有的網友說2.1的standard目前UWP用不了。
ef core具體用法 文檔中心都有文檔教程,首先是先創建一個 Standard2.0的項目,然後創建一個數據上下文,和一些模型。
dotnet控制台項目使用ef core的使用方法。
上面的帖子是官方的使用方法,下圖是我的項目的,和大多數網友的沒什麼區別。
standard項目名字叫EFcore就是創建了model 類,和一個上下文,必裝的包如下:
Microsoft.EntityFrameworkCore.Sqlite 這個包,個人理解應該是主要用來連接資料庫的,可以被UWP項目引用進而操作資料庫。
然後我們需要一個dotnet core的控制台程式,用來創建遷移和執行遷移,要是用過asp.net core的大家都知道 其實用ef core很方便,一個項目就可以創建遷移和執行遷移。
上圖左邊的圖上我們是給文件路徑傳了一個路徑,等會再說為什麼給個路徑,右邊就是多裝了一個庫Microsoft.EntityFrameworkCore.Tools,這個主要是執行遷移指令的。下圖就是在包管理控制台執行遷移指令
Add-Migration InitialCreate 這個是創建資料庫的表的骨架
Update-Database 這就是把表給生成 文檔中心都有寫
控制台程式設為啟動程式,包管理那裡預設項目為standard項目,上面做完把控制台程式執行完都很正常,說明基礎已經做好。然後新建個uwp項目,用來測試uwp使用會不會出問題。
圖上是有報錯,報錯提示不能打開資料庫文件,去git上找了原因是因為,在資料庫上下文寫的資料庫文件名不是絕對路徑,所以會導致找不到資料庫,然後改了代碼以後,發現正常了。
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
var dbFile = await ApplicationData.Current.LocalFolder.TryGetItemAsync("blogging.db") as StorageFile;
if (null == dbFile || SystemInformation.IsFirstRun)
{
// first time ... copy the .db file from assets to local folder
var localFolder = ApplicationData.Current.LocalFolder;
var originalDbFileUri = new Uri("ms-appx:///Assets/blogging.db");
var originalDbFile = await StorageFile.GetFileFromApplicationUriAsync(originalDbFileUri);
if (null != originalDbFile)
{
dbFile = await originalDbFile.CopyAsync(localFolder, "blogging.db", NameCollisionOption.ReplaceExisting);
}
}
try
{
using (var db = new BloggingContext())
{
//這裡是傳絕對路徑給的數據上下文
db.DbFilePath = dbFile.Path;
db.Database.Migrate();
//// Create
db.Add(new Blog { Url = "http://blogs.msdn.com/adonet", TestUrl = "http://blogs.msdn.com/adonet" });
db.SaveChanges();
// Read
var blog = db.Blogs
.OrderBy(b => b.BlogId)
.ToList().Select(b => b.TestUrl);
SQLite.ItemsSource = blog;
}
}
catch (Exception ex)
{
}
}