有时候,为了程序存储数据的可靠性、安全性和增删改查的速度,不得不采用本地数据库。
在最近写的一个WPF程序中,我采用的是EntityFrameworkCore.SqlServerCompact40这个包来应用SqlServerCompact数据库。
首先要,构建数据的基础模型类,最后封装到对数据操作的context类,
EntityFrameworkCore.SqlServerCompact40支持EFcore的数据库迁移,一定要安装Microsoft.EntityFrameworkCore.Tools这个包,才能支持自动生成数据库迁移类。
另外在WPF中需要另外构建继承于IDbContextFactory<ClientContext>的ClientContextFactory类。
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.Extensions.Configuration; namespace Test.Infrastructure.EntityFramework { public class ClientContextFactory : IDbContextFactory<ClientContext> { private IConfigurationRoot configuration; public ClientContextFactory() { var builder = new ConfigurationBuilder() .SetBasePath(System.AppContext.BaseDirectory) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); configuration = builder.Build(); } public ClientContext Create(DbContextFactoryOptions options) { var optionsBuilder = new DbContextOptionsBuilder<ClientContext>(); optionsBuilder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"), m => { m.EnableRetryOnFailure(); }); return new ClientContext(optionsBuilder.Options); } } }
然后就可以,通过vs控制台,执行Add-Migration命令,自动生成迁移类了。
相关资料
No parameterless constructor was found on 'ClientsContext'. Either add a parameterless constructor to 'ClientsContext' or add an implementation of 'IDbContextFact
Dotnet EF Migrations for ASP.NET Core