Entity framework 5.0代码首先使用WPF中的MySQL

Entity framework 5.0代码首先使用WPF中的MySQL,mysql,wpf,entity-framework,ef-code-first,Mysql,Wpf,Entity Framework,Ef Code First,本演练适用于SQL Express: 我希望它能与MySQL一起工作。我做了一些研究,但我发现没有一种技术能为我做到这一点。理想情况下,我想这样做: <entityFramework> <defaultConnectionFactory type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" /> </entityFramework> 这不起作用(我安装了MySQ

本演练适用于SQL Express:

我希望它能与MySQL一起工作。我做了一些研究,但我发现没有一种技术能为我做到这一点。理想情况下,我想这样做:

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

这不起作用(我安装了MySQL Connector Net 6.5.4并引用了MySQL.Data)。我已经尝试从IDbConnection工厂中派生,如下所示:

然后使用:

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

但这也不行。有谁能给我一些建议,如何让这个工作


非常感谢。

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


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


您可以尝试使用dot net connector(至少是试用版)。

要在VS2012上使用connector 6.5.4和代码优先的EF5,您需要:

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

    gacutil/i“C:\ProgramFiles(x86)\MySQL\Connector NET 6.5.4\Assembly\v4.0\MySQL.data.dll” gacutil/i“C:\Program Files(x86)\MySQL\Connector NET 6.5.4\Assembly\v4.0\MySQL.data.entity.dll”

  • 在项目的App.config中,将此代码添加到
    部分:

    <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>
    
    
    
  • 现在,将对MySql.Data和MySql.Data.Entity的引用添加到您的解决方案和类似的代码中(我创建MySqlConnection,然后将其传递给MyDbContext的构造函数)

    公共类MyDbContext:DbContext
    {
    公共MyDbContext(DbConnection-connection):基(connection,true){}​
    公共数据库集产品{get;set;}
    }
    [表(“sund_产品”)]
    公共类产品
    {
    [关键]
    [列(“产品标识”)]
    公共int Id{get;set;}
    [列(“产品”)]
    公共字符串Ean{get;set;}
    [列(“产品制造商id”)]
    公共int运算符id{get;set;}
    [栏(“月份状况”)]
    公共字符串monthStatus{get;set;}
    [列(“额外字段”5“)]
    公共字符串SideId{get;set;}
    }
    

  • 它不起作用不是对问题的描述。你收到任何例外情况吗?什么是异常堆栈跟踪和消息?它不起作用意味着上述技术无法将代码连接到MySQL数据库。没有例外,应用程序将继续连接到默认的SQLEXPRESS数据库。谢谢你的回复!为了验证基础知识,您是否正确设置了连接到MySQL的连接字符串,还是将其保留为默认值(即SQL Express或SQL CE)?您能否举例说明如何创建MySQL
    DbConnection
    对象?另外,您是否已经升级到MySql Connector 6.6.5.0,并提出了一种不同的方法来实现这一点,您可以在app.config中指定所有内容?
    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; }
    }