为啥写这篇帖子呢?其实是因为翻微软的文档中心偶然翻到的,于是就出于好奇就试试了,看看用着怎么样。
以前没注意图片,所以我今天发现的时候,显示EF Core3.1支持standard2.0,于是就想试试UWP用着会不会出问题,之前有的网友说2.1的standard目前UWP用不了。
ef core具体用法 文档中心都有文档教程,首先是先创建一个 Standard2.0的项目,然后创建一个数据上下文,和一些模型。
上面的帖子是官方的使用方法,下图是我的项目的,和大多数网友的没什么区别。
standard项目名字叫EFcore就是创建了model 类,和一个上下文,必装的包如下:
Microsoft.EntityFrameworkCore.Sqlite 这个包,个人理解应该是主要用来连接数据库的,可以被UWP项目引用进而操作数据库。
然后我们需要一个dotnet core的控制台程序,用来创建迁移和执行迁移,要是用过asp.net core的大家都知道 其实用ef core很方便,一个项目就可以创建迁移和执行迁移。
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)
{
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();
db.Add(new Blog { Url = "http://blogs.msdn.com/adonet", TestUrl = "http://blogs.msdn.com/adonet" });
db.SaveChanges();
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应该算是没死掉的。
项目代码和参考的博客文章如下:有说的不对的请大家予以批评
如果转载请注明出处(前提有人愿意转载😅)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库