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) { } }