5

本演练适用于 SQL Express: http: //msdn.microsoft.com/en-us/library/gg197522 (v=VS.103).aspx

我希望它与 MySQL 一起工作。我已经进行了一些研究,但我发现的所有技术都无法为我做到这一点。理想情况下,我想做这样的事情:

      <entityFramework>
    <defaultConnectionFactory type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
  </entityFramework>

这不起作用(我安装了 MySQL Connector Net 6.5.4 并引用了 MySql.Data)。我已经尝试从 IDbConnection 工厂派生,如此处所示: http ://www.vworker.com/RentACoder/misc/BidRequests/ShowBidRequest.asp?lngBidRequestId=1563829

然后使用:

      <entityFramework>
<defaultConnectionFactory type="SchoolModel.MySqlConnectionFactory, SchoolModel" />

但这也不起作用。任何人都可以给我一些关于如何让它工作的指示吗?

非常感谢。

4

3 回答 3

3

要在 VS2012 上使用带有代码优先 EF5 的连接器 6.5.4,您需要:

  1. 安装 MySql 连接器 6.5.4 msi
  2. 以管理员身份打开 VS2012 x86 命令提示符并执行:

    gacutil /i "C:\Program Files (x86)\MySQL\Connector NET 6.5.4\Assemblies\v4.0\mysql.data.dll" gacutil /i "C:\Program Files (x86)\MySQL\Connector NET 6.5.4\Assemblies\v4.0\mysql.data.entity.dll"

  3. 将此代码添加到项目的 App.config<configuration>部分:

    <system.data> 
        <DbProviderFactories> 
            <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.5.4.0, Culture=neutral, 
                PublicKeyToken=c5687fc88969c44d"
            /> 
        </DbProviderFactories> 
    </system.data>
    
  4. 现在添加对 MySql.Data 和 MySql.Data.Entity 的引用到您的解决方案和一些类似这样的代码(我创建 MySqlConnection,然后将其传递给 MyDbContext 的构造函数)

    public class MyDbContext : DbContext
    {
        public MyDbContext(DbConnection connection) : base(connection, true) { }    ​
    
        public DbSet<Product> Products { get; set; }
    }
    
    [Table("sund_jshopping_products")]
    public class Product
    {
        [Key]
        [Column("product_id")]
        public int Id { get; set; }
        [Column("product_ean")]
        public string Ean { get; set; }
        [Column("product_manufacturer_id")]
        public int OperatorId { get; set; }
        [Column("months_status")]
        public string MonthsStatus { get; set; }
        [Column("extra_field_5")]
        public string SideId { get; set; }
    }
    
于 2012-10-22T09:41:38.017 回答
1

连接器 6.5.4 不支持 EF 5 的代码优先。实际上它不支持代码优先。

您可以尝试使用点网连接器(至少试用版)。

于 2012-10-12T18:24:30.803 回答
0

您在设置数据库连接时是否将数据源设置为 MySQL 。此外,在直接从代码尝试连接之前,请单击并确保“测试连接”成功。

在此处输入图像描述

在此处输入图像描述

于 2012-10-04T14:58:14.770 回答