如何使用 Entity Framework + Mysql(在控制台应用程序中)

Posted

技术标签:

【中文标题】如何使用 Entity Framework + Mysql(在控制台应用程序中)【英文标题】:How to use Entity Framework + Mysql (in console application) 【发布时间】:2012-08-16 09:39:52 【问题描述】:

我正在创建一个广泛使用数据库的应用程序。现在我们使用 mysql 连接器,简单的 sql 语法来满足我们的需求。现在我们正在尝试使用 LINQ 进行数据库查询。所以我正在尝试实现DBcontext。但它没有正确连接。问题出在连接字符串中。

这是我现在使用的方法,

class My_DB_Context: DB_Context

     public My_DB_Context(string connection_String):base(connection_String)
     void make_Some_Transaction()


public void Main()

     string conn_Str = "SERVER=localhost;DATABASE=my_DB;UID=temp_User;PASSWORD=password;";

     My_DB_Context temp = new My_DB_Context();
     temp.make_Some_Transaction();

任何人都可以说如何实现这一目标吗?有很多关于如何在 ASP.Net 中实现这一点的帖子。但是,我找不到类似控制台的应用程序。这个article 承诺这是可能的。

注意:我使用的是 C#/.Net 4.0。 Visual Studio 2010,实体框架 5.0.0

EDIT-1: 我忘了提到我对 ASP.Net 一无所知。所以,我无法理解他们在article 中更改的参数。这些是我收到的异常消息

An error occurred while getting provider information from the database. This can be 
caused by Entity Framework using an incorrect connection string. Check the inner 
exceptions for details and ensure that the connection string is correct. 

下面是内部异常

A network-related or instance-specific error occurred while establishing a connection 
to SQL Server. The server was not found or was not accessible. Verify that the 
instance name is correct and that SQL Server is configured to allow remote connections"

EDIT-2: 在 Ingo 的评论之后,现在只有我注意到他们是在昨天才发布的。但是,这个问题非常基础。他们不会轻易改变这些事情。因此,旧 Entity FrameWorks 的答案也受到了兼容性的欢迎。

EDIT-3: 我看到了一个叫做 entity_Connection_String 的东西。我认为这是我必须挖掘的东西。

【问题讨论】:

为什么你认为在 ASP.NET 和控制台应用程序中连接 MySQL 有区别>? 不确定这是否适用于 EF5.0...***.com/questions/76488/… 连接到数据库应该独立于您使用的应用程序,因此您可以在 ASP.NET 应用程序、控制台应用程序、Winforms 应用程序、Windows 服务中使用纯 EF、NHibernate 或纯 SQL 命令,等等。我也不知道你在说什么参数。 @Ingo 我已经裁判过了。我更改了连接字符串无济于事。我尝试添加“provider”,得到的回复是“provider” is not in syntax。 好吧,我在想指向pattersonc.com/blog/2009/04 的第二个答案可能很有趣。由于那是一篇较旧的帖子,因此该解决方案当然可能不适用于全新的 EF 5.0 并且......它甚至是正式发布的吗? ...我认为仍处于测试阶段.... OHHH 它已发布...昨天 【参考方案1】:

你告诉我们你有官​​方mysql connector installed for .net,所以这是好事

现在您的连接字符串有错误:

你的:

SERVER=localhost;DATABASE=my_DB;UID=temp_User;PASSWORD=password

应该是:

Server=localhost;Database=my_DB;Uid=temp_User;Pwd=password;

来源:http://www.connectionstrings.com/mysql#p28

【讨论】:

更多信息***.com/questions/3283820/…【参考方案2】:

Entity Framework 确实适用于 MySQL。您需要执行以下操作:

    在您的 app.config 中包含提供的 MySql 更改您的 Main 函数,使其看起来更像这样

代码:

public void Main()

   string conn_Str = "name=MyDbContextConnectionStringNameFromAppConfigFile";

【讨论】:

不是骗局,它是 EF 希望您做事的方式之一。我只是提供了适用于您当前代码的代码。

以上是关于如何使用 Entity Framework + Mysql(在控制台应用程序中)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Entity Framework 7 记录查询?

Entity Framework 学习系列 - 认识理解Entity Framework

如何使用 Entity Framework Core 模拟异步存储库

如何使用 Entity Framework 生成和自动递增 Id

如何使用 Entity Framework Core 正确保存 DateTime?

如何使用 Entity Framework Core 获取主键值