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を返しますが、これはnullになることはなく、ifブロックが役に立たなくなります。newCourse.Language = language.SingleOrDefault();何があっても常に実行されます。

==また、文字列変数である可能性が最も高いものを使用しようとすると、問題が発生する可能性もあると思います。.Equals()代わりに、文字列が等しいかどうかを実際に調査するメソッドを使用することをお勧めします。また、最初のものを取得しようとしているだけなので、これを実行しないのはなぜですか。

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

これにより、その言語に一致する最初の言語が取得されるか、nullが返されます。このような場合、変数が実際にnullifの場合、言語として英語を割り当てるステートメントを作成できます。language

于 2013-02-12T16:41:04.737 に答える