【发布时间】:2011-11-03 18:31:52
【问题描述】:
我需要在一个非现场 MySQL 数据库中处理几个表中的数据,我们访问权限有限,因此决定利用它来获得一些 EFCF 经验。无论我做什么,我都无法从 MySQL 数据库中获取任何数据。使用 MySQL 工作台,我可以确认连接详细信息是否正确,并且可以访问必要的表。
以下是为保护服务器等而稍作修改的当前配置。
网络配置
<connectionStrings>
<clear />
<add name="foo" connectionString="Server=111.222.333.444; Database=foo; Uid=foouser; Pwd=bar;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<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" />
</DbProviderFactories>
</system.data>
DbContext
public class DbContext : System.Data.Entity.DbContext
{
public DbContext()
: base("foo")
{
}
public DbSet<Model.resource_request> resource_requests { get; set; }
}
资源请求
[Table("resource_requests")]
public class resource_request
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Int64 id { get; set; }
public string CustomerName { get; set; }
public string ContactEmail { get; set; }
}
使用我收到的即时窗口快速检查上下文状态:
ctx.Database.Connection.Open()
Expression has been evaluated and has no value
ctx.Database.Connection
{MySql.Data.MySqlClient.MySqlConnection}
[MySql.Data.MySqlClient.MySqlConnection]: {MySql.Data.MySqlClient.MySqlConnection}
base {System.ComponentModel.Component}: {MySql.Data.MySqlClient.MySqlConnection}
ConnectionString: "server=111.222.333.444;database=foo;User Id=foouser"
ConnectionTimeout: 15
Database: "foo"
DataSource: "111.222.333.444"
ServerVersion: "5.1.43-community"
State: Open
但是执行查询会导致
ctx.resource_requests.Count();
我确定我一定遗漏了一些明显的东西,但它是什么?
非常感谢
【问题讨论】:
-
您找到解决方案了吗?
-
这是很久以前的事了,所以从记忆中我认为它与适配器的数据类型转换中的错误有关。最后,我想我下载了源代码并进行了必要的调整。
标签: c# mysql entity-framework asp.net-4.0