当前位置: 首页 > news >正文

php网站开发实例教程代码网站建设社区交流

php网站开发实例教程代码,网站建设社区交流,学校网站建设调查报告,做网站找哪家公司前言最近打算用.NET Core写一份开源的简易CMS系统,来练练手所以又去深入研究了一下Entity Framework Core 发现其实有些细节园子里还是很少讲到.特意整理了几个细节.正文1.数据库迁移先了解一下什么是数据库迁移,它提供了一种方法#xff0c;可以逐步将Code First… 前言最近打算用.NET Core写一份开源的简易CMS系统,来练练手所以又去深入研究了一下Entity Framework Core 发现其实有些细节园子里还是很少讲到.特意整理了几个细节. 正文1.数据库迁移先了解一下什么是数据库迁移,它提供了一种方法可以逐步将Code First的实体架构更改应用于数据库以保持数据库与EF Core模型同步同时保留数据库中的现有数据。EF Core的数据迁移相对EF6来说改了不少也简化了一些.所以我们现在就来看看如何进行数据迁移我们以官方代码来做为例子..先来创建一个简单的上下文.    public class BloggingContext : DbContext    {        public BloggingContext()            : base()        {        }        private static ILoggerFactory Mlogger new LoggerFactory();                       protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)        {            Mlogger.AddProvider(new MyFilteredLoggerProvider());            var loggerFactory                   optionsBuilder                .UseMySql(链接地址);                   }        protected override void OnModelCreating(ModelBuilder modelBuilder)        {        }        public DbSetBlog Blogs { get; set; }        public DbSetPost Posts { get; set; }    }    public class Blog    {        public int BlogId { get; set; }        public string Url { get; set; }        public ListPost Posts { get; set; }    }    public class Post    {        public int PostId { get; set; }        [MaxLength(50)]        public string Title { get; set; }        public string Content { get; set; }        public int? BlogId { get; set; }        public Blog Blog { get; set; }    }}然后我们通过Nuget来添加引用.Microsoft.EntityFrameworkCore.Tools打开NuGet包管理控制台选择默认项目为实体上下文所在的程序集如下:首先我们需要添加一个迁移版本.执行命令如下:Add-Migration BanBen1(这里是版本的名称,可以自己定义)我们会发现Model程序集下多了一个文件夹为Migrations里面有3个文件.如下:XXXXXXXXXXXXX_BanBen1.cs - 主迁移文件。包含应用迁移in Up()和恢复in Down()所需的操作。XXXXXXXXXXXXX_BanBen1.Designer.cs - 迁移元数据文件。包含EF使用的信息。BloggingContextModelSnapshot.cs - 当前模型的快照。主要用于确定添加下一次迁移时发生了哪些变化.然后我们执行命令Update-Database如果你的数据库没创建,是第一次,就会执行成功,如果你前期创建过数据库.但是是第一次创建迁移..就会失败.(注意这里!!)因为第一次生成的迁移方法是按照新增来迁移的..而不是修改.错误信息可能会如图:解决方法是找到XXXXXXXXXXXXX_BanBen1.cs - 主迁移文件,删除Up和Down里面的代码.删除后如下:    public partial class BanBen1 : Migration    {        protected override void Up(MigrationBuilder migrationBuilder)        {        }        protected override void Down(MigrationBuilder migrationBuilder)        {                  }    }其实这次迁移就没有修改数据库任何信息..我们在来创建第二个迁移版本..首先,我们修改实体类..给Post的Content加上长度限制,如下:public class Post    {        public int PostId { get; set; }        [MaxLength(50)]        public string Title { get; set; }        [MaxLength(50)]        public string Content { get; set; }        public int? BlogId { get; set; }        public Blog Blog { get; set; }    }然后我们开始迁移..记得每次迁移,都需要创建一个迁移版本!我们执行命令如下(注意,我们的版本已经改为了2): Add-Migration BanBen2成功创建迁移文件之后,我们更新数据库.Update-Database成功信息如下:然后我们进入数据库看看效果:我们发现Content的长度限制已经改为了50 2.删除迁移 有的时候我们刚刚创建了一个迁移,还没应用到数据库,就发现自己需要变更实体.那我们就可以删除这个没有应用的迁移版本.执行命令如下:(注意,这里是没有应用过的迁移,可以删除.如果应用过了.则会收到错误信息)Remove-Migration3.迁移回滚.有些时候,我们需要回滚到之前的一个迁移版本.,比如我们部署的时候,开发版本和稳定版本肯定不一样..那么我们就会用到回滚命令.执行如下:Update-Database 这里填写需要回滚的版本名,比如我们执行如下:Update-Database BanBen1然后我们会发现,BanBen2中的长度限制,已经没有了.. 4.生成一个迁移SQL脚本有的时候,我们的生产数据库,是需要用脚本来创建库的.所以我们也可以直接通过实体来生成SQL脚本.命令如下:Script-Migration就会生成对应的迁移SQL脚本.如下:CREATE TABLE __EFMigrationsHistory (    MigrationId varchar(95) NOT NULL,    ProductVersion varchar(32) NOT NULL,    CONSTRAINT PK___EFMigrationsHistory PRIMARY KEY (MigrationId));INSERT INTO __EFMigrationsHistory (MigrationId, ProductVersion)VALUES (20180316015722_BanBen1, 2.0.2-rtm-10011);ALTER TABLE Posts MODIFY COLUMN Content varchar(50) NULL;ALTER TABLE Posts ALTER COLUMN Content DROP DEFAULT;INSERT INTO __EFMigrationsHistory (MigrationId, ProductVersion)VALUES (20180316022508_BanBen2, 2.0.2-rtm-10011);当然,这个脚本可以自定义需要迁移的版本号.文件名,需要生成迁移脚本的上下文(多个上下文的情况). 5.迁移脚本的帮助说明.我们可以通过命令来获取帮助说明Get-Help about_EntityFrameworkCoreget-help Add-Migration -fullget-help Script-Migration -full原文https://www.cnblogs.com/GuZhenYin/p/8579420.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://wiki.neutronadmin.com/news/348562/

相关文章:

  • 黑山网站建设ipad做电影网站
  • ps网站导航怎么做分销系统软件
  • 哈尔滨网站建设哪儿好薇wordpress首页提示
  • 电子商务网站平台建设扬中网站建设机构
  • 佛冈县住房和城乡建设局网站怎么在手机上设计网站
  • 东莞网站建设0769dtwordpress 绿色
  • 一般设计网站页面用什么软件网站建设费用 知乎
  • 购物网站免费模板石家庄官网设计及搭建
  • .net网站开发用的书籍18岁以上站长统计
  • 免费制作婚介网站涡阳网站优化
  • 全国集团网站建设同城app开发公司排名
  • 网站如何做问卷调查报告网站收录方法
  • 舟山市建设工程造价管理协会网站安阳网站设计哪家好
  • 一个网站能卖多少钱?wordpress弹出式侧边栏
  • .net电商网站全站开发北京网站优化方案
  • 默认网站预览能能显示建设中成品源码灬1688高清完整版
  • 武进区城乡建设局网站电子商务网站建设与维护书
  • 吕梁网站建设公司网站查询页面设计
  • 宣传网站建设意义wordpress弹窗下载插件
  • dns网站卫士 收录郑州百度seo网站优化
  • 两个人做类似的梦 网站网站开发选定制还是模板
  • 浙江建设职业技术学院门户网站网站框架有哪些
  • 网站建设项目的工作分解碑林微网站建设
  • 网站建设价格费用关于一学一做的短视频网站
  • 做网站的毕设用什么软件百度快照提交入口
  • 网站被黑了怎么办网站正在建设中...为什么护卫神
  • 网站内容及实现的方式网站开发框架技术
  • 微擎 网站开发工具网址ip域名查询
  • 门户网站建设ppt方案公司网站邮箱怎么看接收服务器类型
  • 福泉市建设局网站网站seo外包价格