本演练非常适用于 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" />
但这也行不通。任何人都可以给我一些关于如何让它工作的指示吗?
非常感谢。
最佳答案
要在 VS2012 上将连接器 6.5.4 与代码优先 EF5 结合使用,您需要:
- 安装 MySql Connector 6.5.4 msi
以管理员身份打开 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"
在您项目的 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>
现在将对 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; } }
关于mysql - Entity Framework 5.0 代码优先与 WPF 中的 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638456/