如何在实体框架中检查我知道不存在的内容?

时间:2015-05-22 10:23:14

标签: c# asp.net-mvc entity-framework

我有一种方法,我想根据数据库状态做不同的事情。

我的方法做的最后一件事就是将一些内容保存到数据库中。每次运行此方法时,它都会按预期工作/值会更改 - 除了第一次。

由于一个复杂的原因,我不能在这里使用种子方法,但是,这样做的正确方法是什么?

添加

      if (db.Settings.First(x=>x.name=="DBState").Value == "1")
            return false;

导致序列不存在错误,以及

      if (db.Settings.FirstOrDefault(x=>x.name=="DBState").Value == "1")
            return false;

导致以下异常

  

对象引用未设置为对象的实例。

这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:6)

只需使用Any()来获取布尔结果?

return db.Settings.Any(x => x.name == "DBState" && x.Value == "1");

答案 1 :(得分:2)

您正在检查null的值,因此是异常。

尝试

var myObj = db.Settings.FirstOrDefault(x=>x.name=="DBState");

if(myObj != null){
 // do stuff here safely
}

答案 2 :(得分:1)

使用最后一个选项并为其添加空检查:

var setting = db.Settings.FirstOrDefault(x=>x.name=="DBState");
if (setting != null && setting.Value == "1")
        return false;