【问题标题】:NullReferenceException when saving to database with asp.net using EF [duplicate]使用 EF 使用 asp.net 保存到数据库时出现 NullReferenceException [重复]
【发布时间】:2014-01-06 18:38:13
【问题描述】:

我有一个电影数据库,我试图在其中保存一个流派。我在 winforms 中有相同的项目,并且代码可以正常工作,所以这可能是我错过的一些简单的事情。

不管怎样,代码如下:

    MovieCollectionEntities db = new MovieCollectionEntities();
    Genre g = new Genre();
    g.GenreName = TextBoxGenresAdd.Text;
    db.Genres.Add(g);
    db.SaveChanges();

我得到的错误信息是:

System.NullReferenceException was unhandled by user code
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.

编辑:
值得一提的可能是我正在使用母版分页,代码来自 AddGenre.aspx。

edit2:完整答案可在@NullReferenceException in DbContext.saveChanges()找到

【问题讨论】:

  • 你在哪一行得到这个'NullReferenceException'?
  • 哦,对不起,我在 db.SaveChanges();
  • 数据库中是否存在同名的DBSet和对应的表?
  • @Nexus23,有。我的 winforms 项目中有完全相同的代码部分,并且效果很好。 IT 使用相同的 EF 和数据库。
  • 看看这个。 stackoverflow.com/questions/17136455/… 可能你的情况是一样的。

标签: c# asp.net entity nullreferenceexception


【解决方案1】:

从这个 sn-p 中考虑,db.Genres.Add(g); 可能正在尝试将 g 添加到不存在的 Genres 列表中。在调用 Add 方法之前,请尝试确保 Genres 是某个东西。

【讨论】:

  • 流派是流派列表,如果我使用列表框,我可以清楚地看到列表中已经存在的当前流派。例如,如果我使用 listbox1.datasource = db.Genres.ToArray(); listbox1.databind();我看到了所有的流派
【解决方案2】:

grimsan55,

当您尝试插入数据库的数据与数据库中的字段不正确对齐时,通常会发生此错误。例如,如果您的电影数据库中有标题、评级和制片人字段,并且每个字段都是NOT NULL。然后你去插入数据,但是你只有title和rating,就会抛出这个错误。

最好的办法是返回您的数据库并确保一切设置正确,然后转到项目中的模型并更新您的模型。您可能已经更改了数据库中的某些内容,但忘记更新项目中的模型。

希望这会有所帮助。我有时会在更新数据库时遇到这个问题,忘记了我所做的更改,然后尝试像以前一样保存数据。

【讨论】:

    【解决方案3】:

    @Abhinav 链接到正确的页面。问题是 aspx 页面的名称与导致程序崩溃的实体名称相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 2019-08-25
      • 2018-11-06
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多