• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
安绍峰
独学而无友,则孤陋而寡闻。
博客园    首页    新随笔    联系   管理    订阅  订阅
asp.net core mvvm WTM2.3.1框架 代码生成器初始化数据和EF迁数据两不误

WalkingTec.Mvvm框架(简称WTM)是基于asp.net core  EF+MVVM下为数不多的面向后端开发者自动生成前、后端代码的免费开源框架,特别适合个人开发者面向中小企业快速开发软件。

由于框架不能自动迁移数据。一般在生成数据库后,再遇到数据库结构发生变化,只有删除数据库,再让框架自动重新生成,这重新一生成,原来用的测试数据,就不见了,如果里面有正式数据,这个方法就更不可取了。

如果用官方文档介绍的方法,直接用EF数据迁移命令生成数据库,数据库里没有一条数据,调试时无法要登录进项目页面,只能手动添加数据,非常麻烦。

下面介绍一种即能框架的初始化数据和EF迁数据两不误的方法

一、使用EF提供的命令行工具,生成数据库

EF Core提供了一些命令行工具来进行数据同步,比如add-migration, update等,具体可以参考微软文档

EF Core的原理是通过反射寻找代码中的DbContext,找到连接字符串从而确定要操作的数据库。

但是WTM框架支持SqlServer,MySql,PgSql等多种数据库,通过配置文件来决定使用哪种,而EF是不知道应该去哪里找的

这种情况下,我们可以使用Design-time DbContext来手工指定需要同步的数据库,具体可以参考微软文档

简单来说,就是在代码中创建一个继承IDesignTimeDbContextFactory的类,例如:

DataContextFactory.cs

 public class DataContextFactory : IDesignTimeDbContextFactory<DataContext>
    {
        public DataContext CreateDbContext(string[] args)
        {
            return new DataContext(“数据库连接字符串", DBTypeEnum.SqlServer);
        }
    }

 再用add-migration, update生成数据库:

 

 

 

 

数据库生成后, 数据库里会生成一张表, , 记住这张也方便重新创建和并恢复表里的数据。  第二、生成框架初始化数据

删除生成的数据库,然后启动项目,让框架自动创建数据库,并初始化数据。

创建数据库表__EFMigrationsHistory 

 

CREATE TABLE [dbo].[__EFMigrationsHistory](
	[MigrationId] [nvarchar](150) NOT NULL,
	[ProductVersion] [nvarchar](32) NOT NULL,
 CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY CLUSTERED 
(
	[MigrationId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO 

 恢复刚才保存的数据,如

INSERT INTO [dbo].[__EFMigrationsHistory]
           ([MigrationId]
           ,[ProductVersion])
     VALUES
           ('20190830092937_InitialCreate'
           ,'2.2.6-servicing-10079')
GO

 这样就大功造成了,之后数据库结构发生变化,就不用删除数据 了,只需要迁移数据即可。

以上方法在SQLServer数据库下测试成功。

WTM:

框架文档地址:http://wtmdoc.walkingtec.cn 文档还在不断完善中。。。 框架QQ交流群:694148336

您可以点这里 http://wtmdoc.walkingtec.cn/setup 在线一键生成WTM的项目,立刻开始体验WTM之美~~~

 

独学而无友,则孤陋而寡闻。
posted on 2019-09-01 19:52  安绍峰  阅读(871)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3