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

大区直播间网站开发制作企业公示信息查询系统吉林

大区直播间网站开发制作,企业公示信息查询系统吉林,天元建设集团有限公司怎么样,设计软件的软件前言 如果大家刚使用EntityFramework Core作为ORM框架的话#xff0c;想必都会遇到数据库迁移的一些问题。 起初我是在ASP.NET Core的Web项目中进行的#xff0c;但后来发现放在此处并不是很合理#xff0c;一些关于数据库的迁移#xff0c;比如新增表#xff0c;字段想必都会遇到数据库迁移的一些问题。 起初我是在ASP.NET Core的Web项目中进行的但后来发现放在此处并不是很合理一些关于数据库的迁移比如新增表字段修改字段类型等等不应该和最上层的Web项目所关联数据的迁移文件放到这里也感觉有点多余有点乱乱的感觉所以才想着单独出来由专门的项目进行管理会比较好也比较清晰 注意目标框架选择的是.NET Core 2.0而不是.NET Standard 2.0。 0、前期准备 a、表实体定义这个是在.NET Standard 2.0的类库中存放的。 /// summary     /// 系统应用的用户实体     /// /summary     public class ApplicationUser : BaseModel     {         /// summary         /// 用户名         /// /summary         public string UserName { get; set; }         /// summary         /// 密码         /// /summary         public string Password { get; set; }         /// summary         /// 邮件地址         /// /summary         public string Email { get; set; }     } b、新建一个.NET Core 2.0的类库并定义好我们所要使用的数据库上下文很简单接下来开始我们的正文 /// summary     /// 系统上下文     /// /summary     public class LightContext : DbContext     {         public LightContext(DbContextOptionsLightContext options) : base(options)         {         }         /// summary         /// 系统应用用户         /// /summary         public DbSetApplicationUser ApplicationUser { get; set; }         /// summary         /// 角色表         /// /summary         public DbSetRole Role { get; set; }     } 1、问题汇总 首先要确保仓储类库中已经引入以下两个Nuget包没有的话请使用包管理器进行安装。不建议直接引入原包Microsoft.AspNetCore.All按需引入即可 Install-Package Microsoft.EntityFrameworkCore.SqlServerInstall-Package Microsoft.EntityFrameworkCore.Tools a打开CMD然后切换到类库所在路径下执行以下命令。不过你也可以使用程序包管理器控制台PMC进行迁移但是会有少许变化部分命令见下表 迁移命令描述 CMD命令PMC命令 创建迁移migrationname为迁移名称 dotnet ef migrations add migrationnameadd-migration migrationname 移除迁移(删除最近的一次迁移) dotnet ef migrations removeremove-migration 应用最新的迁移(使迁移文件应用到数据库) dotnet ef database updateupdate-database 应用指定的迁移 dotnet ef database update migrationnameupdate-database migrationname 查看迁移列表 dotnet ef migrations list 查看数据库上下文信息 dotnet ef dbcontext info dotnet ef 错误提示   未找到与命令“dotnet-ef”匹配的可执行文件 解决方法   在项目文件Light.Repository.csproj中添加以下节点 ItemGroupDotNetCliToolReference IncludeMicrosoft.EntityFrameworkCore.Tools.DotNet Version2.0.1 //ItemGroup 重新执行上面的命令如果出现了EF Core的标志一头蓄势待发的野马表示已经成功  b、执行以下命令进行迁移 dotnet ef migrations add InitLightDB 错误提示 The specified framework version 2.0 could not be parsed The specified framework Microsoft.NETCore.App, version 2.0 was not found. - Check application dependencies and target a framework version installed at: \ - Alternatively, install the framework version 2.0. 解决方法   在项目文件中添加以下节点 PropertyGroupTargetFrameworknetcoreapp2.0/TargetFrameworkRuntimeFrameworkVersion2.0.3/RuntimeFrameworkVersion/PropertyGroup c、重新执行b步骤的命令报错信息如下 错误提示   Unable to create an object of type LightContext. Add an implementation of IDesignTimeDbContextFactoryLightContext to the project, or see https://go.microsoft.com/fwlink/?linkid851728 for additional patterns supported at design time. 这个问题如果是在Web项目并且配置了DbContext的链接字符串的话是不会出现此问题的。很显然是迁移命令没有找到DbConnectionString导致的接下来我们按照提示实现一个IDesignTimeDbContextFactoryLightContext试试 解决方法   创建一个与DbContext同一目录下的DesignTimeDbContextFactory文件然后实现接口中的方法CreateDbContext并配置ConnectionString public class DesignTimeDbContextFactory : IDesignTimeDbContextFactoryLightContext     {         public LightContext CreateDbContext(string[] args)         {             var builder new DbContextOptionsBuilderLightContext();             builder.UseSqlServer(Server(localdb)\\MSSQLLocalDB;Integrated Securitytrue;Initial CatalogLight;);             return new LightContext(builder.Options);         }     } 再次执行迁移命令终于成功了。 成功提示   Done. To undo this action, use ef migrations remove 同时类库下面会生成Migrations文件夹以及相关的迁移文件 2、小试迁移命令 a、使用以下命令应用迁移生成数据库和表 dotnet ef database update 通过VS的SQL Server资源管理器查看生成数据库的结构其中__EFMigrationsHistory为每次迁移的记录表 b、因为string类型的字段迁移到数据库之后的数据类型为nvarchar(max)并且是可空类型的下面我们就使用Fluent API对ApplicationUser表字段进行配置同样你也可以使用属性注解的方式进行配置因为我自己不喜欢“污染”表实体 public static void ConfigApplicationUser(ModelBuilder modelBuilder)         {             modelBuilder.EntityApplicationUser(m             {                 m.Property(t t.Email)                         .HasMaxLength(50);                 m.Property(t t.UserName)                         .IsRequired()                         .HasMaxLength(50);                 m.Property(t t.Password)                         .IsRequired()                         .HasMaxLength(20);             });         } 然后同样使用上面的两条命令重新迁移并更新数据库结构 观察数据库表结构已经更新  同理添加字段删除字段都是一样的迁移操作还是很方便的 3、扩展 a、为了方便演示其实上面在类库中执行迁移时的数据库连接字符串是写死的那么最好的办法是应该去读取Web项目下已经配置好的连接这样就能保证上下的一致性不用再去为了EF的迁移而单独维护一个多余的数据库连接配置。改造也很简单即通过Configuration组件读取appsettings.json的ConnectionStrings节点改造之后是这样子的 public class DesignTimeDbContextFactory : IDesignTimeDbContextFactoryLightContext     {         public LightContext CreateDbContext(string[] args)         {             Directory.SetCurrentDirectory(..);//设置当前路径为当前解决方案的路径             string appSettingBasePath Directory.GetCurrentDirectory() /Light.AuthorityApi;//改成你的appsettings.json所在的项目名称             var configBuilder new ConfigurationBuilder()                 .SetBasePath(appSettingBasePath)                 .AddJsonFile(appsettings.json)                 .Build();             var builder new DbContextOptionsBuilderLightContext();             //builder.UseSqlServer(Server(localdb)\\MSSQLLocalDB;Integrated Securitytrue;Initial CatalogLight;);             builder.UseSqlServer(configBuilder.GetConnectionString(LightConnection));             return new LightContext(builder.Options);         }     } 注意需要额外引入下面这个Nuget包 Install-Package Microsoft.Extensions.Configuration.Json b、属性注解[Column(Order 1)]对EF Core来说还没有达到可以调整数据库生成字段的顺序不过我们还是可以修改迁移文件的实体属性的顺序来达到我们想要的效果。下面是我调整之后重新生成的表是不是看出来和上面的有什么不同一图胜万语  c、最后一步自己动手试试看创建一个SeedData迁移文件来添加数据库的初始数据。 4、最后 EF Core的强大远不止这些还有更多的使用方法等着我们去发现去探索。每天进步一点点是件很愉快的事情 原文http://www.cnblogs.com/wangjieguang/p/EFCore-Migration.html .NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://wiki.neutronadmin.com/news/239588/

相关文章:

  • 好的网站建设价格个人网站 icp
  • 东南亚购物网站排名怎么做淘宝客手机网站
  • 网站后台扫描插件盘锦网站变建设
  • 安徽省水利厅j建设网站wordpress 下载源
  • 工贸一体化企业建设电子商务网站的误区机械英文网站
  • 建设银行网站怎么短信转账现在能不能去北京
  • 常见的电子商务网站有哪些帮人做网站收费合法吗
  • 做牙的网站叫什么做c语言的题目的网站
  • 鄂尔多斯市建设厅网站智慧团建手机版登录注册入口
  • 专业建设网站服务学编程的人以后都干嘛呢
  • 一个公司做多个网站有经验的武进网站建设
  • 织梦网站栏目对应首页app 网站开发公司
  • 唐山官方网站建设南宁关键词排名优化外包
  • 包头市做网站公司自己建网站做外贸
  • 网站建设与管理 教材php房产中介网站源码
  • vue和react可以做pc网站吗网站建设后台管理便捷
  • 网站建设规划表o2o网站开发公司
  • 不良网站举报中心官网网站建设餐饮
  • 温州网站优化案例精准ip地址查询工具
  • 普洱做网站的报价海口双语网站建设
  • 遂宁网站建设五金公司宣传册设计样本
  • 专业做民宿的网站网站还没有做可以备案吧
  • 网站电脑端和手机端在线室内设计网站
  • 沙元浦做网站的公司六安网站优化
  • 中山企业营销型网站制作小莉帮忙郑州阳光男科医院
  • 丽水网站建设企业自建微网站服务器
  • 成都成华网站建设网站反链如何做
  • c 网站开发调试东莞制作企业网站公司
  • 北京城乡和住房建设部网站关于做美食的小视频网站
  • 安乡网站制作男女做暖暖视频免费网站