无法创建“匿名类型”类型的常量值。此上下文中仅支持基本类型或枚举类型

2024-04-24

我对linq和实体框架。我正在尝试解决以下问题为何不起作用的问题。产生的错误是“无法创建‘匿名类型’类型的常量值。在此上下文中仅支持原始类型或枚举类型。”

我已经尝试了很多不同的方法,但仍然收到与原始类型相关的错误。如果有人能看一下下面的代码并希望指出哪里出了问题,我将不胜感激。

        public Entities.BikeData[] GetBikesWithExpiredSyncDeadline(int noOfDays) {

        using (OfficeEntities cxt = GetContext()) 
        using (ReportingEntities RepCxt = GetReportingContext()) {
            Data.Repository.Abstract.IBikeRepository BikeRepos = new Data.Repository.Concrete.BikeRepository();                

            var details = (from sd in cxt.BikeDetails
                                        where sd.autoreminder == true
                                            && (sd.lastremindersent == null || sd.lastremindersent < EntityFunctions.AddDays(DateTime.UtcNow, noOfDays * -1))
                                            && (sd.emailaddress != null && sd.emailaddress.Trim() != "")
                                        select new {
                                            Serial = sd.Serial,
                                            EmailAddress = sd.emailaddress
                                        }).ToList();

            var resLst = (from r in RepCxt.RegisteredBikes
                          join d in details on r.Serial equals d.Serial 
                          join cs in cxt.CompanySettings.ToList() on r.CompanyID equals cs.CompanyID
                          where (!r.lastupdate.HasValue || r.lastupdate < EntityFunctions.AddDays(DateTime.UtcNow, cs.AutoNotificationFrequency * -1))
                          select new Entities.BikeData {
                              ID = r.ID,
                              Name = r.Ship,
                              Serial = r.Serial,
                              LastUpdate = r.lastupdate,
                              DaysSinceLastSync = (r.lastupdate.HasValue? EntityFunctions.DiffDays(r.lastupdate.Value, DateTime.UtcNow).Value : -1),
                              EmailAddress = (d.EmailAddress == null ? string.Empty : (String.IsNullOrEmpty(d.EmailAddress) ? r.ShipEmailAddress : d.EmailAddress))
                          });

            return resLst.ToArray();
        }
    }

UPDATE

我现在通过创建视图采取了不同的方法,因此我不再需要在 EF 中进行跨上下文联接。我希望您能在以下方面提供帮助。

当我运行 objectQuery.ToTraceString() 时,它为我提供了返回数据库中记录的有效 SQL,但是 EntityFramework 中的 resLst 总是返回 0。有什么明显的原因可以解释为什么会发生这种情况吗?

  var resLst = (from ls in cxt.BikeLastUpdates
                          where (!ls.lastupdate.HasValue || ls.lastupdate < EntityFunctions.AddDays(DateTime.UtcNow, ls.AutoNotificationFrequency * -1))
                          && (ls.autoreminder ==true)
                          && (ls.lastremindersent == null || ls.lastremindersent < EntityFunctions.AddDays(DateTime.UtcNow, 3 * -1))
                          && (ls.emailaddress !=null && ls.emailaddress.Trim() != "")
                          select new Entities.BikeData{
                              ID = (ls.ID ?? new Guid()),
                              Name = ls.Bike,
                              Serial = ls.Serial,
                              LastUpdate = ls.lastupdate,
                              EmailAddress = (String.IsNullOrEmpty(ls.emailaddress) ?  ls.ShipEmailAddress : ls.emailaddress)
                          });

            var objectQuery = resLst as ObjectQuery;

            return resLst.ToArray();

问题是对详细信息的 ToList() 调用。在 EF 中,如果 IEnumerable 是简单类型(例如 int),则只能在查询中引用 IEnumerable。但是,您可以参考另一个 IQueryable。因此,删除 ToList() 调用应该可以实现此目的。

编辑:同样,您应该删除 ctx.CompanySettings 上的 ToList() 调用。

这将具有仅执行 1 个查询而不是 2 个查询的额外优势。如果您将 ToList() 放在详细信息上,EF 将生成类似以下内容的内容:

SELECT ...
FROM RegisteredBikes rb
JOIN (
    /* this is your "details" IQueryable */
    SELECT Serial, EmailAddress
    FROM BikeDetails
    WHERE ...
) bd
    ON rb.Serial = b.Serial
JOIN CompanySettings cs
    ON ...
WHERE ...

编辑:要跨上下文执行此操作,您需要将查询放入内存中(例如,通过调用 AsEnumerable() 并在那里执行相关联接。如果联接充当过滤器并且这些在 SQL 中发生很重要,请考虑使用包含()。例如

var serials = details.Select(d => d.Serial);
var filtered = RepCtxt.RegisteredBikes.Where(r => details.Contains(r.Serial);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法创建“匿名类型”类型的常量值。此上下文中仅支持基本类型或枚举类型 的相关文章

  • 使用模型优先方法时如何播种数据?

    所以我正在学习MVC3和EF4 我尝试了代码优先方法 但它对我来说太混乱了 我可以毫无问题地创建类 但最困难的部分是处理外键和彼此之间的关系 但我首先选择了模型 这样我就可以直观地设计它并查看关系在哪里 创建模型后 它会为我创建一个 SQL
  • 通过 Office API 将多个 Word 文档保存为 HTML

    我有大量的Word文档需要解析 由于它们都是从同一个模板创建的 我认为最好的方法是将它们保存为 HTML 文件并解析 HTML 本身 虽然将单个 Word 文档保存为 HTML 相当容易 但我还没有找到从 Word 内部执行批量过程的方法
  • C中的内存使用问题

    请帮忙 操作系统 Linux 其中 sleep 1000 中 此时 top 显示Linux任务 给我写了7 7 MEM使用 valgrind 未发现内存泄漏 我明白 写得正确 所有 malloc 结果都是 NULL 但是为什么这次 睡眠 我
  • 用于生成 C++ 代码轮廓/图的工具 - 有这样的东西吗? [复制]

    这个问题在这里已经有答案了 我需要深入研究用 C 编写的软件组件并对其进行一些修改 我幻想生成一些代码映射 它将显示类之间的关系并引导我完成方法的流程 调用图 有这个工具吗 几年前 我使用 Rational Rose 建模工具 该工具具有对
  • 如何混淆整数?

    我需要从 C 中的整数列表生成唯一值的列表 我以为是 MD5 或类似的 但它们生成了太多字节 整数大小为 2 个字节 例如 我想获得单向通信 0 gt ARY812Q3 1 gt S6321Q66 2 gt 13TZ79K2 因此 在证明哈
  • 如何检查特定作业是否在quartz调度程序中运行#

    我正在使用石英调度程序根据触发器的用户输入来安排写入文件的作业 我想检查作业是否仍在 stop 方法中运行 如何检查作业是否仍在运行 public class JobScheduler static StdSchedulerFactory
  • web请求超时处理?

    HttpWebRequest request HttpWebRequest WebRequest Create url request Timeout 20000 using WebResponse response request Get
  • 时间:2019-03-17 标签:c++rapidjson返回值

    我在我的项目中使用rapidjson 我有一个方法可以解析 json 并返回其中的一部分 static rapidjson Document getStructureInfo std string structureType rapidjs
  • 从 C++ 中的 std::string 获取字节

    我正在一个 C 非托管项目中工作 我需要知道如何获取像 一些要加密的数据 这样的字符串并获取一个 byte 数组 我将用它作为加密的源 在 C 中我做 for int i 0 i lt text Length i buffer i byte
  • 如何BSWAP 64位寄存器的低32位?

    我一直在寻找如何将 BSWAP 用于 64 位寄存器的低 32 位子寄存器的答案 例如 0x0123456789abcdef位于 RAX 寄存器内 我想将其更改为0x01234567efcdab89用一条指令 因为性能 所以我尝试了以下内联
  • DISM.exe 返回代码?

    我有一个程序调用 dism exe 程序 它在后台运行一些命令 现在 我只检查返回代码 0 或其他任何内容 以显示进程失败或成功 我可以用什么来交叉检查返回代码以获得准确的返回错误 DISM 参考了哪些回报 评论中提供的链接DISMAPI
  • 在函数内部使用时,c 数组大小会发生变化

    我有这段代码 include
  • thread_local成员变量构造

    我遇到了 thread local 的一些奇怪行为 不确定我是否做错了什么或者这是一个 GCC 错误 我有以下最小重现场景 include
  • 无法加载文件或程序集“SharpSvn”或其依赖项之一。尝试加载格式不正确的程序

    我刚刚在这里下载了 64 位版本的 SharpSVNthe link http sharpsvn open collab net files documents 180 5570 SSvn 1 7002 1998 x64 zip 当我运行我
  • 如何使用 html 敏捷包获取自定义标签?

    需要创建摘要 索引 为此我有标签
  • 将 JSON 转换为数据表

    我有以下格式的 JSON id 10 name User add false edit true authorize true view true id 11 name Group add true edit false authorize
  • opencv中矩阵的超快中值(与matlab一样快)

    我正在 openCV 中编写一些代码 想要找到一个非常大的矩阵数组 单通道灰度 浮点数 的中值 我尝试了几种方法 例如对数组进行排序 使用 std sort 和选择中间条目 但与 matlab 中的中值函数相比 它非常慢 准确地说 在 ma
  • 文件/文件夹结构的递归搜索

    我正在尝试为返回文件和文件夹列表的 Web 服务构建递归搜索功能 我创建了这两个方法 因此它们充当递归搜索 它首先获取顶级内容 然后将任何文件添加到 fileList 并将任何子文件夹添加到 subFoldersList 我们传入访问级别
  • C 中的静态和外部内联函数[重复]

    这个问题在这里已经有答案了 我正在尝试详细了解静态函数和外部函数之间的区别 我知道静态内联函数和外部内联函数之间的基本区别 我的理解如有错误请指正 静态内联函数仅对定义它的翻译单元可见 外部内联函数可以在多个翻译单元中访问 最好在头文件中定
  • 警告 C4172:返回局部变量或临时变量的地址[重复]

    这个问题在这里已经有答案了 可能的重复 指向局部变量的指针 https stackoverflow com questions 4570366 pointer to local variable 我在这个网站上阅读了很多关于同一问题的其他主

随机推荐

  • 如何与android的静态boost库链接?

    我在使用 Android ndk r5b 将 boost 库移植和链接到 android 时遇到问题 我首先使用以下步骤构建 boost 库 没有 mpi python 1 注释掉boost 1 46 0 libs thread build
  • 如何在 Scikit-learn 聚合聚类中使用 Pearson 相关性作为距离度量

    我有以下内容data http dpaste com 031VZPM txt State Murder Assault UrbanPop Rape Alabama 13 200 236 58 21 200 Alaska 10 000 263
  • Azure API 管理和 ASMX/WSDL SOAP 端点?

    我有一个使用 ASMX 终结点的旧 SOAP API Azure API 管理能够识别它并与之交互吗 还有更多人对此功能感兴趣 反馈 azure com http feedback azure com forums 248703 api m
  • 我们如何在python的“openpyxl”包中绘制两个系列的数据(折线图)

    假设我们有这样的代码 from openpyxl import Workbook wb Workbook ws wb active for row in range 1 10 value ws cell row row column 1 v
  • 是否可以/建议返回一个范围?

    我正在使用范围库来帮助我的类中的文件管理器数据 如下所示 class MyClass public MyClass std vector
  • 更改 TabBar SwiftUI 中的选项卡选择颜色

    我试图更改 TabBar 中选定选项卡的颜色 但没有任何效果 我可以更改 TabBarbackgroundColor通过写作 struct ContentView View init UITabBar appearance backgrou
  • 使用 knockout.js 防止双击按钮

    禁用按钮以便 Knockout js 不会发生双击的最佳方法是什么 我有一些用户快速点击导致多个 ajax 请求 我认为 knockout js 可以通过多种方式处理这个问题 并希望看到一些替代方案 使用信号量 旋转锁 基本上 您计算一个元
  • MongoDB 将所有现有索引迁移到新数据库

    我有一个 MongoDB 开发集群 随着时间的推移 我在其中创建索引 作为开发改进的一部分 在测试 生产 MongoDB 集群上 我也想维护相同的索引 那么我如何获取现有集合的所有索引并在新数据库上创建相同的集合索引 从 mongo she
  • 在 Access 2007 中使用 ADO 或 DAO 哪个更好?

    在Access 2007中创建新数据库时 应该使用ADO ActiveX数据对象 还是DAO 数据访问对象 编辑 该数据库的一部分将从 Excel 2007 电子表格导入数据 郑重声明 曾经的 Jet 的正式名称现在是 Access 数据库
  • magento从产品sku获取产品类型

    我如何使用产品 sku 或 id 获取产品类型 简单 可配置 分组 我已加载产品集合并从中尝试通过 product gt getTypeId 但它不打印产品类型 请帮我 Thanks I think product gt getTypeId
  • ANTLR 嵌套函数

    ANTLR 适合这个项目吗 我正在寻找处理和转换用户输入的字符串 其中可能包含自定义函数 例如 用户可能会在字符串中写入类似 CAPITALIZE word 的内容 而我想执行 使用 StringUtils 在后台进行实际转换 我想用户有时
  • 查询返回的结果多于预期

    请耐心等待 这并不是我真正的问题 只是想让别人理解 作者注 The 可能重复 https stackoverflow com questions 4966203 mongo query question gt lt问题解决方案允许 elem
  • ggplot 中十分位数的低、中高颜色

    我想使用 ggplot 绘制多边形类型的空间图 其中绘制多边形 多边形的颜色由其权重决定 示例数据框看起来像 这是数据文件完整的数据文件 https dl dropboxusercontent com u 55346033 sampleDa
  • Gmail 邮件可以通过 API 存档吗?

    似乎无法使用 API 来存档邮件 在 Web 界面中归档涉及moving 而不是labeling发送至 所有邮件 的消息 API 不仅没有列出 所有邮件 标签 而且move也失踪了 只有modify这仅允许在消息中添加或删除标签 这很奇怪
  • 保护 Azure 云服务配置中的敏感信息

    我们正在使用云服务配置 https learn microsoft com en us previous versions azure reference jj156212 v 3Dazure 100 存储应用程序设置 但我们想保护一些应用
  • 电子邮件安全:TLS 和 S/MIME

    我的理解是 TLS 是一种加密技术 允许两个 STMP 服务器安全地相互通信 如果使用 HTTPS 连接到 STMP 服务器 与使用 S MIME 相同吗 不会 TLS 会对通信通道进行加密 S MIME 对消息进行加密 也就是说 这就是
  • System.Web.Security.FormsAuthentication.Encrypt 返回 null

    我正在尝试加密一些 userData 以使用 Forms 身份验证创建我自己的自定义 IPrincipal 和 IIdentity 对象 我已将代表我登录用户的对象序列化为 Json 并创建了我的 FormsAuthentication 票
  • C++:用 istream 包装 vector

    我想包一个vector
  • Eclipse 中的默认导入

    有没有办法自定义 Eclipse 中的默认导入 例如 如果我默认打开一个新的 JUnit 测试类 我会得到以下导入 import static org junit Assert import org junit Test 我想得到什么 im
  • 无法创建“匿名类型”类型的常量值。此上下文中仅支持基本类型或枚举类型

    我对linq和实体框架 我正在尝试解决以下问题为何不起作用的问题 产生的错误是 无法创建 匿名类型 类型的常量值 在此上下文中仅支持原始类型或枚举类型 我已经尝试了很多不同的方法 但仍然收到与原始类型相关的错误 如果有人能看一下下面的代码并