簡體   English   中英

實體框架DbSet拋出NullReferenceException

[英]Entity Framework DbSet throws NullReferenceException

我嘗試mysql database with the entity framework將一些值發布到我的mysql database with the entity framework 我能夠成功連接到我的數據庫。 但是,在嘗試添加一些值之后,出現了NullReferenceException錯誤。

這是我的代碼:

public class MysqlContext: DbContext
{
    public DbSet<Test> Test { get; set; }

    public MysqlContext(): base("MysqlDefaultConnection")
    {
        Database.Connection.Open();
        var t = new Test { Name = "test", Id = 0 };
        Test.Add(t);
        SaveChanges();
    }
}

[Table("test")]
public class Test
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
}

這是我對實體框架的配置:

<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>

<connectionStrings>
<add name="MysqlDefaultConnection" connectionString="server=localhost;user id=dev;password=****;database=****" providerName="MySql.Data.MySqlClient" />

<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
  <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>

最后,這是我對數據庫的表描述:

CREATE TABLE `test` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(45) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

因此,如果我嘗試連接到數據庫,則一切正常。 在嘗試將我的實體添加到DbSet中之后,我將獲得一個異常。

如果您不在DbContext構造函數中嘗試此代碼,其行為方式相同。

public class MysqlContext: DbContext
{
    public DbSet<Test> Test { get; set; }

    public MysqlContext(): base("MysqlDefaultConnection")
    {

    }
}

[Table("test")]
public class Test
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
}

public void Main()
{
  var myContext = new MysqlContext();
  var t = new Test { Name = "test", Id = 0 };    
  myContext.Set<Test>.Add(t);
  myContext.SaveChanges();
}

我相信這是因為您正在承包商中進行此操作。 在此階段,我假設Test屬性尚未初始化為值。 初始化MysqlContext之后,請嘗試在應用程序生命周期中稍后運行測試代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM