【问题标题】:Entity Framework database first with MySQL and MS SQL实体框架数据库首先使用 MySQL 和 MS SQL
【发布时间】:2011-09-09 00:09:44
【问题描述】:

我目前有一个应用程序,它首先使用 EF 数据库,它是针对 SQL Server 数据库构建的。我希望能够连接到 MSSQL 或 MySQL。

我假设通过使用 EF,我可以将连接字符串更改为指向 MySQL,但是,当我这样做时,我收到以下错误:

无法转换类型的对象 'MySql.Data.MySqlClient.MySqlConnection' 输入 'System.Data.SqlClient.SqlConnection'。

还需要哪些其他步骤才能使 EF 与 MySQL 和 MSSQL 一起使用。

更新: 连接字符串:

<add name="EntityConnString" connectionString="metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;provider=MySql.Data.MySqlClient;
provider connection string=&quot;server=localhost;User Id=root;password=password;Persist Security Info=True;database=mydb;Connection Protocol=NamedPipe&quot;" providerName="System.Data.EntityClient" />

【问题讨论】:

  • 你能用虚拟数据发布你的连接字符串吗?
  • 添加了连接字符串。
  • 您是否对生成的代码进行了任何更改?你的 tt 文件或一切都是默认的?您的连接字符串很好。但也请查看您的 edmx 内部,它可能包含对存储命名空间 (ssdl) 中 mssql 的一些引用。

标签: mysql sql-server entity-framework database-first


【解决方案1】:

为此,您需要单独的 EDMX - 或至少 SSDL 部分,并且很可能还需要连接字符串中指定的 MSL 部分。原因是 SSDL(EDMX 中的存储描述)取决于提供者 = 目前您的 SSDL 说:“我只能连接到 MSSQL”。如果你想支持 MySQL,你需要 SSDL,它会说:“我只能连接到 MySQL”,并根据使用的数据库服务器相应地定义连接字符串。 SSDL 包含特定于数据库的定义。如果您的 MySQL 数据库将使用不同名称的表或列或不同的架构,您还需要一个新的 MSL 部分(描述数据库表和实体之间的映射)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    相关资源
    最近更新 更多