美文网首页dotNET.NET
EF6.0 + Mysql 在.NET中通过Nuget安装

EF6.0 + Mysql 在.NET中通过Nuget安装

作者: 么么gou的偷 | 来源:发表于2016-12-08 16:53 被阅读497次

    这个在我花了大力气的情况下终于搞通了,日了狗。。
    直接说正事。

    此处达到的目的是能够通过Nuget的命令行直接在mysql中创建数据库的表。

    1.先行条件,需要创建好对应的model。(此处需要以后再来补)
    2.通过Nuget安装好各个工程。

    那么下面正式开始

    1.创建一个.NET的库的工程。(为什么要单独一个工程呢,因为此处主要是与数据库相关的操作,为了解耦将其分开)

    Paste_Image.png

    2.然后在Mysql官网的里面,找到了安装的前置条件。
    https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html

    Paste_Image.png

    这个集合包整合了所有的东西,因此只安装这个就够了。

    3.此时可能会出来一个APP.CONFIG文件,当然先不用去管

    4.创建一个

    创建ADO.NET 选择模型内容

    建议空的codefirst的模型

    5.创建完成之后,就开始要关注各种东西了,首先,你的APP.CONFIG中会多出些东西来。
    你需要将其中几个关键的东西改正。这里是最关键的一环,因为我在这里整了半天!!!!!

    关键的图片

    6.那么在刚刚的ADO.NET连接数据库的东西我们可以写入

    Paste_Image.png

    7.打开Nuget命令行工具,将该工程设为启动项,然后命令行对象调整为该工程
    输入指令
    PM> Enable-Migrations
    然后输入
    PM> Add-Migration AddDatabase
    生成了

    Paste_Image.png

    再输入
    PM> Update-Database -Verbose
    此时数据库中就多出来创建好的表格了。

    注意:有几个可能出错的地方。
    1.切勿多次用Nuget安装一个个的包。entities的那个包已经是对应好的组合包了,直接安装那一个,别的都别动。否则会出一些很奇怪的错误。可能是各个版本的问题。

    2.The connection string 'MyContext' in the application's configuration file does not contain the required providerName attribute."
    这个错误的原因是,在connectstring中的那个providerName="MySql.Data.MySqlClient"没有添加,Nuget不会带有这个的,在前面的说明中有提到

    3.No MigrationSqlGenerator found for provider 'MySql.Data.MySqlClient'. Use the SetSqlGenerator method in the target migrations configuration class to register additional SQL generators.
    这个错误的原因是,在你的ADO.NET那个cs文件中没有加上[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]

    Paste_Image.png

    4.No connection string named 'MyContext' could be found in the application config file.
    需要将对应的工程改为启动项,此处config文件在多个工程联动的情况下会出现问题,有兴趣的可以研究下。

    5.若是一切都正常了,你发现丫的半天没有表出来,哈哈,记得最后一句代码。
    PM> Update-Database -Verbose

    Paste_Image.png

    如果数据库里面没有这个表会导致后续的数据库更新失败。

    7.存储过程在添加字段或者删除字段的时候有可能会影响,所以MapToStoredProcedures 干脆就不要写在modelcreating的方法下面了。记得把configuration中的false改为这两个。


    Paste_Image.png

    8.Parameter '@columnType' must be defined


    连接串中添加

    哦了。后续的补充我会在研究过后再贴上,伤不起啊,不过个人觉得研究中你会学到很多。不是指学到了怎么安装,而是怎么去解决这些问题。我能找到Mysql上的对这个的介绍,也能找到stackoverflow上的一些些东西。还有最关键的一点,如果你搜的问题丫的哪里都找不到,果断重建一个工程,因为很有可能像我之前一样,工程添加多次,config文件中一大推,对的也不对了。

    相关文章

      网友评论

        本文标题:EF6.0 + Mysql 在.NET中通过Nuget安装

        本文链接:https://www.haomeiwen.com/subject/hxstyttx.html