64

私のアプリケーションには講師がいて、教えることができるコースのリストがあり、コースを削除するときに講師への接続を削除したいと考えています。コードは次のとおりです。

public void RemoveCourse(int courseId)
{
    using (var db = new AcademicTimetableDbContext())
    {
        var courseFromDb = db.Courses.Find(courseId);

        var toRemove = db.Lecturers
                        .Where(l => l.Courses.Contains(courseFromDb)).ToList();

        foreach (var lecturer in toRemove)
        {
            lecturer.Courses.Remove(courseFromDb);
        }

        db.SaveChanges();
    }
}

しかし、うまくいきません。私は得る

NotSupportedException: タイプ の定数値を作成できませんCourse。このコンテキストでは、プリミティブ型または列挙型のみがサポートされています。

私は何を間違っていますか?

4

5 に答える 5

90

Contains非プリミティブ値では使用できません。行う

Where(l => l.Courses.Select(c => c.CourseId).Contains(courseId)

(または使用するIdフィールド)。

于 2012-11-15T20:46:16.420 に答える
0

これは、ここFunc<T, bool>のように動的条件を記述する方法として Where() にa を渡すときにも発生する可能性があり ます。何らかの理由でデリゲートを SQL に変換できません。

于 2018-10-24T18:39:38.007 に答える