相关疑难解决方法(0)

无法创建类型的常量值此上下文仅支持基元类型或枚举类型

我在下面的查询中收到此错误

无法创建类型的常量值API.Models.PersonProtocol.在此上下文中仅支持基元类型或枚举类型

ppCombined下面是一个IEnumerable对象PersonProtocolType,由2个PersonProtocol列表的concat构成.

为什么这会失败?我们不能使用LINQ JOIN条款里面SELECTJOIN

var persons = db.Favorites
    .Where(x => x.userId == userId)
    .Join(db.Person, x => x.personId, y => y.personId, (x, y) =>
        new PersonDTO
        {
            personId = y.personId,
            addressId = y.addressId,                   
            favoriteId = x.favoriteId,
            personProtocol = (ICollection<PersonProtocol>) ppCombined
                .Where(a => a.personId == x.personId)
                .Select( b => new PersonProtocol()
                 {
                     personProtocolId = b.personProtocolId,
                     activateDt = b.activateDt,
                     personId = b.personId
                 })
        });
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework join

152
推荐指数
1
解决办法
18万
查看次数

LINQ,无法创建XXX类型的常量值.在此上下文中仅支持基元类型或枚举类型

在我的应用程序中,我有讲师,他们有可以教授的课程列表,当我删除课程时,我想删除与讲师的联系.这是代码:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我明白了

NotSupportedException:无法创建类型的常量值Course.在此上下文中仅支持基元类型或枚举类型.

我究竟做错了什么?

c# linq entity-framework

62
推荐指数
2
解决办法
7万
查看次数

标签 统计

c# ×2

entity-framework ×2

linq ×2

join ×1