1

嗨,我尝试从我的数据库中获取一些日期,但它不起作用,我真的不知道为什么。

我收到以下错误:

Error: Entities in 'DataBase' participate in the 'FK_MSCourse_Language' relationship. 0 related 'Language' were found. 1 'Language' is expected. 

我的代码:

var language = db.Language.Where(x => x.Designation == publicLanguage);

if (language != null)
{
  newCourse.Language = language.SingleOrDefault();
}
else
{
  newCourse.Language = db.Language.SingleOrDefault(x => x.Designation == "English");
}

如果我这样做它可以工作,但我想将它动态地从数据库中转换为语言。

switch (publicLanguage)
{
  case "French":
    newCourse.Language = db.Language.SingleOrDefault(x => x.Designation == "French");
    break;
  default:
    newCourse.Language = db.Language.SingleOrDefault(x => x.Designation == "English");
    break;
}

有人知道我在做什么错吗?

谢谢,马库斯

4

1 回答 1

0

LINQ 的Where操作返回一个 IEnumerable,它永远不能为空,从而使您的if块无用。newCourse.Language = language.SingleOrDefault();无论如何它都会执行。

我还认为尝试使用==最有可能的字符串变量也可能会给您带来一些问题。我建议改用该.Equals()方法,它实际上会调查字符串是否相等。另外,既然你只是想抓住第一个,为什么不这样做:

var language = db.Language.FirstOrDefault(x => x.Designation.Equals(publicLanguage));

这将获取与该语言匹配的第一个,或返回 null。在这种情况下,如果变量实际上为空,那么您可以只使用一个if语句,然后将英语指定为语言。language

于 2013-02-12T16:41:04.737 回答