实体框架代码首先+ MySQL ... NullReferenceException [英] Entity Framework Code First + MySQL... NullReferenceException

查看:237
本文介绍了实体框架代码首先+ MySQL ... NullReferenceException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在一个离线的MySQL数据库中的几个表中处理数据,我们有限的访问权限,并决定使用它作为获取一些EFCF体验的机会。无论我做什么,我都无法从MySQL数据库中获取任何数据。使用MySQL工作台我可以确认连接详细信息是否正确,可以访问所需的表。



以下是为了保护服务器等而编辑的当前配置。 >

Web配置

 < connectionStrings> 
< clear />
< add name =fooconnectionString =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数据提供者invariant =MySql.Data.MySqlClientdescription =。用于MySQL的Net Framework数据提供者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;组;
}

资源请求

  [Table(resource_requests)] 
public class resource_request
{
[Key]
[ DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Int64 id {get;组; }

public string CustomerName {get;组; }
public string ContactEmail {get;组; }
}

使用我收到的立即窗口快速检查上下文状态:

  ctx.Database.Connection.Open()
表达式已被评估,没有值
ctx.Database。连接
{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
数据库:foo
DataSource:111.222.333.444
ServerVersion:5.1.43-community
状态:打开

但是执行查询会导致

  ctx.resource_requests.Count(); 



我确定我必须丢失一些明显的东西,但是是什么?



非常感谢

解决方案

你尝试命名你的连接字符串DbContext吗?这个名字应该与班级名称一致。



像这样:

  < add name =DbContextconnectionString =Server = 111.222.333.444; Database = foo; Uid = foouser; Pwd = bar; providerName =MySql.Data.MySqlClient/> 

还没有尝试使用MySql,但是我没有在命名时与Sql Server发生问题正确连接字符串。



祝你好!


I need to work with data in a couple of tables in an off site MySQL database we have limited access to and decided to use it as an opportunity to pick up some EFCF experience. No matter what I do i cannot get any data out of the MySQL database. Using MySQL workbench I can confirm the connection details are correct and can access the tables necessary.

Below is the current config edited a little to protect servers, etc.

Web Config

<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; }
}

Resource Requests

[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; }
}

Quickly checking the context state using the immediate window I receive:

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

However executing a query results in

ctx.resource_requests.Count();

I'm sure I must be missing something obvious but what is it?

Many Thanks

解决方案

Have you tried to name your connection string DbContext ? It's name should match the class name.

Like this:

<add name="DbContext" connectionString="Server=111.222.333.444; Database=foo; Uid=foouser; Pwd=bar;" providerName="MySql.Data.MySqlClient" />

Haven't tried yet with MySql, but I had issues in the past with Sql Server when not naming properly the connection string.

Best regards!

这篇关于实体框架代码首先+ MySQL ... NullReferenceException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆