为啥写这篇帖子呢?其实是因为翻微软的文档中心偶然翻到的,于是就出于好奇就试试了,看看用着怎么样。

以前没注意图片,所以我今天发现的时候,显示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)
{ } }

具体好像就发现这一点和以前使用的区别,其他的好像都正常使用。下图的listview上半部分为什么没数据呢?是因为我测试了db.Database.Migrate();能不能正常迁移表新添的字段。所以上面的旧字段没值而已。

得出结论,对UWP支持还算良好,目测以后的大一统时代各种支持应该会更好,所以UWP应该算是没死掉的。

项目代码和参考的博客文章如下:有说的不对的请大家予以批评

博客项目代码地址

参考博客地址

有启发的git讨论地址

如果转载请注明出处(前提有人愿意转载

最新文章

  1. PDF 补丁丁 0.5.0.2713 发布(替换字库功能修正字符宽度问题)
  2. Empire C:游戏篇(1)
  3. Node.js(2)-protobuf zeromq gzip
  4. 5分钟内使用React、Webpack与ES6构建应用
  5. Oracle中decode方法的作用
  6. Java学习随笔——RMI
  7. ORA-12012: error on auto execute of job "ORACLE_OCM
  8. vue 源码学习----build/config.js
  9. Spring+SpringMVC+Hibernate小案例(实现Spring对Hibernate的事务管理)
  10. CodeForces842C 树上dfs
  11. var_dump()函数输出不完整,有省略号?解决办法
  12. 代理错误[WinError 10061]
  13. 【转载】COM 组件设计与应用(十二)——错误与异常处理
  14. 再学HTML之一
  15. matlab求逆运算:左除( \ )和右除( / ),inv,pinv
  16. 编程算法 - 全然背包问题 代码(C)
  17. Git_学习_07_ 推送修改到远端
  18. python实现进程的并发
  19. 【Effective C++读书笔记】序
  20. MySQL区间统计SQL

热门文章

  1. 手把手写一个基于Spring Boot框架下的参数校验组件(JSR-303)
  2. django cms 5月第一弹
  3. 团队项目-Beta冲刺1(七个小矮人)
  4. ios--->OC中Protocol理解及在代理模式中的使用
  5. postman发送请求的简单操作
  6. 宝塔面板管理阿里云服务器FTP不能用
  7. springIOC源码接口分析(八):AutowireCapableBeanFactory
  8. Oracle数据库、实例、用户、表空间、表之间的关系
  9. Message: 'chromedriver' executable needs to be available in the path.
  10. 物流跟踪API-快递单推送