https://www.cnblogs.com/GreenShade/archive/2020/02/27/12372851.htmlhtml
爲啥寫這篇帖子呢?實際上是由於翻微軟的文檔中心偶然翻到的,因而就出於好奇就試試了,看看用着怎麼樣。
之前沒注意圖片,因此我今天發現的時候,顯示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) { } }