ASP.net MVC4 + mono+ ubuntu15.1+ jexus +ef6 +mysql (linq to mysql) 实录,以及各类错误总结

项目配置:ef6+mysql5.6(5.6.x , 5.7.3可以,但是5.7.9不行)+mono4.2+ubuntu15.1

准备工作:(注意 mysql版本)提前下载并安装好mysql for vs 插件  详情   插件下载


1)建项目-----》选择.net4.0 mvc项目


2)EntityFramework更新到最新

ASP.net MVC4 + mono+ ubuntu15.1+ jexus +ef6 +mysql (linq to mysql) 实录,以及各类错误总结_第1张图片


3)下载最新的mysql-connector-net-6.9.8-noinstall,解压到然后找到对应.net版本的dll文件(5个),添加引用到项目中

ASP.net MVC4 + mono+ ubuntu15.1+ jexus +ef6 +mysql (linq to mysql) 实录,以及各类错误总结_第2张图片


4) 把对应的web.config中的entityFramework节点修改为下面(注意版本号Version=x.x.x,要与MySql.Data.dll一致):

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v12.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
  </entityFramework>
  <!--linux下面需要加上下面这一段system.data,windows下面可以不加-->
  <system.data>
    <DbProviderFactories>
      <!--为防止重复。windows下面重复添加会报错,先移除,再添加-->
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"  description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>


      改后如配置图

ASP.net MVC4 + mono+ ubuntu15.1+ jexus +ef6 +mysql (linq to mysql) 实录,以及各类错误总结_第3张图片

5) 添加实体模型,如下系列图:

ASP.net MVC4 + mono+ ubuntu15.1+ jexus +ef6 +mysql (linq to mysql) 实录,以及各类错误总结_第4张图片

ASP.net MVC4 + mono+ ubuntu15.1+ jexus +ef6 +mysql (linq to mysql) 实录,以及各类错误总结_第5张图片

ASP.net MVC4 + mono+ ubuntu15.1+ jexus +ef6 +mysql (linq to mysql) 实录,以及各类错误总结_第6张图片

ASP.net MVC4 + mono+ ubuntu15.1+ jexus +ef6 +mysql (linq to mysql) 实录,以及各类错误总结_第7张图片



6) 编译--->发布到服务器(windows或linux下面都尝试一下)--->重启web服务器--->浏览

    结束!!!




以下为常见问题:

问题1:VS2013中,EntityFramework连接mysql生成实体的过程,选择链接地址后,对话框闪退。
解决: MySql Connector Net 的版本和 MySql.Data.dll的版本不兼容 ,下载最新的

MySql Connector Net下载地址:http://cdn.mysql.com//Downloads/Connector-Net/mysql-connector-net-6.9.8.msi
MySql.Data.dll的下载地址:http://dev.mysql.com/downloads/connector/net/  点击下载(文件名mysql-connector-net-6.9.8-noinstall.zip,注意Select Platform:.net&mono)
先解压mysql-connector-net-6.9.8-noinstall.zip,把版本对应的dll添加到项目中-----》安装mysql-connector-net-6.9.8.msi



问题2:添加数据库实体模型的时候,出现报错:由于出现以下异常,无法生成模型:“表“TableDetails”中列“IsPrimaryKey”的值为DbNull

解决:我用的是mysql 5.7.9,出错了,然后换成5.7.3,或5.6.X 等版本就好了。


问题3:发布到linux mono上其他类错误,一般就解决方式就是 1)mysql-connector-net-6.9.8-noinstall.zip解压后重新引用项目    2)添加/检查<system.data>节点


问题4:mysql服务器在ubuntu上面无法远程的问题

解决:

第一步:允许配置mysql,让root账号允许远程

    登陆mysql命令:mysql -u root -p

    更改Root账号:UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;
    刷新缓存:flush privileges;

第二步:配置mysql,不让他仅仅监听127.0.0.1

    进入指定的目录:cd  /etc/mysql/mysql.conf.d

    打开mysqld.cnf文件:sudo gedit mysqld.cnf

    然后找到bind-address所在的行(当前bind-address=127.0.0.1),直接改为#bind-address=127.0.0.1,就是注释掉













你可能感兴趣的:(ASP.net MVC4 + mono+ ubuntu15.1+ jexus +ef6 +mysql (linq to mysql) 实录,以及各类错误总结)