• EF选择Mysql数据源


    EF添加ADO.NET实体模型处直接选择Mysql数据源

    最近想到EF是连接多数据库的orm框架,于是就想测试下。查了一堆网上资料后,测试连接mysql成功。步骤如下:

    1、在你项目Model层中nuget安装MySql.Data.Entity

     

    如果没安装这个provider 就进行下面的步骤。就会出现:

    2、MySql官网下载mysql-installer-community-5.7.13.0

    我这边是没安装过mysql,所以是安装全部,第一个选项,MySql Installer。主要目的除了安装mysql,就是安装mysql对于vs的数据源驱动,便于我们在新建ADO.NET实体模型的时候,选择对应的数据源(MySQL Database)。

    3、安装好后,我这个传说中的window程序员必须要下个图形化管理界面。

     

    然后里面新建个数据库,测试用。

    4、接下来就可以进行测试啦~~~

    首先在VS中新建个类库,这个不多说了,新建项目-->ADO.NET实体模型

     

    新建连接

     

    更改数据源

    选择MySQL Database

    Server name:localhost

    用户名密码就不多说了。

    然后就开始选择表进行实体映射,然后问题就出来了~~~

    很奇怪哦,我们压根没这个TableDetails这个表,又哪儿来的主键类型为null。

    百度!无所不能的网友给出了个解决问题的网址——>stakoverflow:

    http://stackoverflow.com/questions/33575109/mysql-entity-the-value-for-column-isprimarykey-in-table-tabledetails-is

    老外回答简洁,靠谱。

    根据这回答咋操作呢?直接扔截图吧。

    打开mysqlcmd窗口

    use test;

    set global optimizer_switch='derived_merge=OFF';

    问题解决~~~~

    这里注意(对于不熟悉mysql命令行的同志,比如我):结尾一定加分号!!!

    上文测试用的数据库test下的school表就映射成功勒

    完美~~~

    提问:对于oraclepostgresql,这些数据库我也下载了,可能选择更改数据源的时候没有出来这些选项,这是需要我们单独去安装的吗?哪儿安装?找不到....

     相关节点配置(个人纪录):

    1、UI的webconfig配置数据库连接字符串肯定是少不了的。(连接字符串在我们Model层创建ADO.NET实体模型的时候就自动生成在了Model层的APPCONFIG中,拷贝过来即可)

    <connectionStrings>
        <!--mysql的数据库连接字符串-->
        <add name="MysqlEntities" connectionString="metadata=res://*/ModelMysql.csdl|res://*/ModelMysql.ssdl|res://*/ModelMysql.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=joey;password=lovemary;persistsecurityinfo=True;database=test"" providerName="System.Data.EntityClient" />
      </connectionStrings>

    2、nuget安装MySql.Data.Entity只需在Model层中进行,但是跟连接字符串一样,得再webconfig中定义一个节点,节点里面写路径方便程序去读取相关信息。

    在entityFramework节点下添加MySql.Data.MySqlClient(System.Data.SqlClient是我们在UI nuget EntityFramework的时候自动加载的,sqlserver的驱动信息)

    MySql.Data.MySqlClient同样我们在Model层nuget MySql.Data.Entity后就加进了APPCONFIG中,拷贝到UI的webconfig即可。(若嫌麻烦,就直接在UI层也nuget MySql.Data.Entity,节点就自动加上去了)

    <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="mssqllocaldb" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
          <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        </providers>
      </entityFramework>

      

    如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
    声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    免费录屏工具
    树莓派4安装mysql
    python中,print、变量、赋值详细理解篇01
    mysql db [Warning] IP address 'xxxx' could not be resolved: Name or service not known
    添加脚本命令
    LRUCache实现方案
    HTTP/2做错了什么?刚刚辉煌2年就要被弃用了!?
    TS 中的 export declare interface 和 export interface 到底有什么不同?
    使用nexus搭建npm私服
    nodejs 安装
  • 原文地址:https://www.cnblogs.com/joeymary/p/5634262.html
Copyright © 2020-2023  润新知