zoukankan      html  css  js  c++  java
  • mvc+mysql+EF

    网上有很多关于EF在联机情况下利用nuget管理器安装的案例,我就讲一下脱机状况吧!

    一.建立一个文件夹,例如D:/Packages

        放入安装EF和mysql需要的包:EntityFramework.6.1.3.nupkg

                                                EntityFramework.Extended.6.1.0.133.nupkg

                                                EntityFramework.zh-Hans.6.1.3.nupkg

                                                MySql.Data.6.9.8.nupkg

                                                MySql.Data.Entity.6.9.8.nupkg

                                                MySql.Web.6.9.8.nupkg

                                                (根据自己的版本放入自己建立的文件夹)

    二.项目右键---管理NuGet程序包---设置---名称(例如Package source)---源(找到自己放的Ef+mysql包的文件夹,例如之前的D:/Packages)---设置ok

    三.vs的菜单项---工具---库程序包管理器---程序包管理控制台:(注意:如果有多个项目 ,在程序包管理控制台--默认项目选择自己要安装的项目)

       在PM>后输入

                       Install-Package EntityFramework -Version 6.1.3(根据自己的版本号添加)              回车键确认安装信息

                       Install-Package EntityFramwork.zh-Hans -Version 6.1.3

                       Install-Package MySql.Data -Version 6.9.8

                       Install-Package MySql.Data.Entity -Version 6.9.8

                       Install-Package MySql.Web -Version 6.9.8                 安装完毕

    四.定义一个上下文类:

             使其继承DbContext 

             例如:

                   [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]  //未添加的情况下就会在Add-Migration InitialCreate时候报错:未为提供程序“MySql.Data.MySqlClient” 找到任何 MygrationSqlGenerator.请在目标迁移配置类中使用 SetSqlGenerator 方法以注册其他SQL生成器

                    public class DataContext:DbContext

                     {

                        //name 新建的连接字符串名称和Context类名不同时候,要在上下文的构造函数中指定连接字符串的名称

                         public DataContext():base("name="Test") {

                             Database.SetInitializer<DataContext>(null)  //不初始化

                        }

                       //自己添加的model,放到数据库中去的

                         public DbSet<User> User{get;set}

                      }

    五.利用EFCodeFirst的数据迁移,在补改变之前数据库结构已经存在的测试数据情况下添加,进行对数据库的操作

      Enable-Migrations -EnableAutomaticMigrations:使用EF CodeFirst 下的数据迁移

      Add-Migration InitialCreate 创建初始化迁移

      Updata-Database -Verbose 修改数据库,将添加的表放到数据库

      添加表:

      Add-Migration Add表名 例如:Add-Migration AddCompany

      Update-Database -Verbose

      添加字段

      Add-Migration 字段名 例如:Add-Migration Name

      Update-Database -Verbose

      删除字段

      Add-Migration Modify表名 例如:Add-Migration ModifyCompany

      Update-Database -Verbose

    记得注意事项:

    1.类型“System.Data.Entity.DbContext” 在未被引用的程序集中定义。必须添加对程序集“EntityFramework, Version=6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089” ---在自己引用EF上下文的程序中(web中)安装EF相关

    2.即使引用上下文所在的程序集,以及在web项目中 PlatformDbContext  db=new PlatformDbContext(), 在web的web.config中没有配置连接字符串,也是会报“未将对象实例化”---所以记得在自己的页面所在web,或者控制台引用程序中配置连接数据库字符串。

     

  • 相关阅读:
    OO第二单元总结-上上下下的快乐
    OO第一单元总结
    OO第四单元博客作业
    OO第三单元博客作业
    OO第二单元博客作业
    OO第一次博客作业
    Python Selenium实现浏览器自动化操作
    Python命名规范
    OO_UNIT4 & OO_2020 SUMMARY
    OO_UINT3_2020
  • 原文地址:https://www.cnblogs.com/aiai-An/p/5183203.html
Copyright © 2011-2022 走看看