有时候,为了程序存储数据的可靠性、安全性和增删改查的速度,不得不采用本地数据库。
在最近写的一个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命令,自动生成迁移类了。
相关资料
Dotnet EF Migrations for ASP.NET Core