如何为UWP Windows 10应用安装Entity Framework/EF Core与SQLite?
在UWP Windows 10应用中配置Entity Framework Core + SQLite(本地App_Data存储)
我太懂你在NuGet里翻得晕头转向的感觉了——UWP的环境确实有特定的依赖限制,版本选错了要么装不上要么跑不起来。别担心,咱们一步步来,精准搞定EF Core搭配SQLite,还能把数据库稳稳存到本地的App_Data目录里。
一、选对NuGet包(关键!)
UWP只支持Entity Framework Core(EF6对UWP的支持非常有限,直接放弃),而且要选和你项目适配的稳定版本:
- 优先选EF Core 6.x或7.x版本(这两个版本对UWP的支持最成熟,适配Windows 10 1809及以上版本)
- 必须安装的核心包:
Microsoft.EntityFrameworkCore.Sqlite(SQLite的EF Core提供程序) - 如果需要使用迁移功能(创建/更新数据库结构),额外安装
Microsoft.EntityFrameworkCore.Tools
小提醒:安装时确保两个包的版本完全一致,比如都选6.0.25,避免版本冲突。
二、配置数据库存储到App_Data目录
UWP的本地存储路径是由系统管理的,咱们需要手动创建App_Data目录,然后把数据库文件放在里面:
1. 提前创建App_Data目录
在App.xaml.cs的OnLaunched方法里添加异步代码,确保应用启动时目录已存在:
using Windows.Storage; protected override async void OnLaunched(LaunchActivatedEventArgs e) { // 保留你原有的启动代码... // 创建App_Data目录(如果已存在则直接打开) var localFolder = ApplicationData.Current.LocalFolder; await localFolder.CreateFolderAsync("App_Data", CreationCollisionOption.OpenIfExists); }
2. 配置DbContext的数据库路径
创建你的DbContext类,指定SQLite的连接字符串,指向App_Data目录下的数据库文件:
using Microsoft.EntityFrameworkCore; using System.IO; using Windows.Storage; public class AppDbContext : DbContext { // 定义你的实体集合,比如: public DbSet<Product> Products { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // 获取本地存储路径,拼接数据库文件路径 var localFolder = ApplicationData.Current.LocalFolder; var dbPath = Path.Combine(localFolder.Path, "App_Data", "MyAppDatabase.db"); // 配置使用SQLite optionsBuilder.UseSqlite($"Data Source={dbPath}"); } // 可选:如果需要自定义实体映射,重写OnModelCreating protected override void OnModelCreating(ModelBuilder modelBuilder) { // 比如配置Product实体的主键: modelBuilder.Entity<Product>().HasKey(p => p.Id); } } // 示例实体类 public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } }
三、初始化数据库
有两种方式初始化数据库,选适合你的:
方式1:使用EF Core迁移(推荐,适合需要迭代数据库结构的场景)
- 打开Visual Studio的Package Manager Console(PMC)
- 运行命令创建初始迁移:
Add-Migration InitialCreate - 应用迁移到数据库:
Update-Database
方式2:自动创建数据库(适合简单场景,无需迁移)
在应用启动时(比如MainPage.xaml.cs的构造函数里)调用EnsureCreated():
public MainPage() { this.InitializeComponent(); InitializeDatabase(); } private async void InitializeDatabase() { using var dbContext = new AppDbContext(); // 如果数据库不存在则创建,存在则不做操作 await dbContext.Database.EnsureCreatedAsync(); }
四、版本适配注意事项
- 你的UWP项目目标版本必须至少是Windows 10 1809(10.0.17763.0),否则EF Core 6.x+可能无法安装。可以在项目属性的“应用”选项卡中调整目标版本。
- 如果你的项目是旧版本UWP(比如1709及以下),只能使用EF Core 3.x版本,但尽量升级到较新的Windows版本以获得更好的支持。
内容的提问来源于stack exchange,提问作者Bimo
相关产品推荐
相关产品推荐

