根据接口生成表达式

2023-11-26

我遇到了例外无法将类型“MySomeTypeThatImplementsISomeInterfaceAndIsPassedAs[T]ToTheClass”转换为类型“ISomeInterface”。 LINQ to Entities 仅支持转换实体数据模型基元类型。

我的存储库看起来像

public interface IRepository<T>
{
    IQueryable<T> Get(System.Linq.Expressions.Expression<System.Func<T, bool>> Query);
}

另外,我有服务等级

public abstract class FinanceServiceBase<TAccount, TParcel, TPayment>
    where TAccount : IAccount
    where TParcel : IParcel
    where TPayment : IPayment
 {
     //...
     IRepository<TPayment> ParcelRepository {get; private set;}         

     public bool MakePayment(TPayment payment)
     {
         //...
         ParcelRepository.Get(p => p.ParcelId == 2);
         // here my exception is thrown
         // **p.ParcelId is in IParcel**
         //...
     }
 }
 //...

通过这门课,我可以控制许多有关财务的事情,而无需重写其他程序的代码。我用 3 个通用参数完成了该类,因为我无法使用 IRepository,因为我的存储库不能<out T>

ParcelId 为 Int32
TParcel 的类型为(待接收包裹)这是一个实施的实体IParcel,并且是用 codeonly 生成的

当我调用 Get 并且生成的 lambda 看起来像这样时,就会出现问题

(**(ISomeInterface)**$p).SomeInterfaceMember == 

代替

($p.SomeInterfaceMember)

因此,实体框架尝试进行强制转换并抛出异常。我想知道的是:是否有办法告诉 linq lambda 字段 p.ParcelId 来自TParcel而不是来自IParcel.

已经尝试过(没有运气):

p => ((TParcel)p).ParcelId 

Thanks


似乎设置通用约束where TAccount : IAccount类似的东西where TAccount : class, IAccount告诉实体框架该表达式包含class并且它不会像对原始 EDM 和枚举类型那样进行显式转换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据接口生成表达式 的相关文章

  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • aws Lambda 在 S3 上传时使 CloudFront 失效

    我同时上传 10 50 个文件 Lambda 会为每个更新的文件触发一个事件 如果文件大小发生变化 因此 我不想一一失效 50x 而是想运行通配符 上传结束时出现一次字符 任何人都可以阐明如何实现这一目标 谢谢 如果我正确理解你的问题 你的
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • 私有模板函数

    我有一堂课 C h class C private template
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • 使用类型名称将 JSON 文本反序列化为特定对象类型 [重复]

    这个问题在这里已经有答案了 我曾经使用下面的代码将 JSON 文本反序列化为强类型对象 Trainer myTrainer JsonConvert DeserializeObject
  • 如何在 Swift 中将字符串编码/解码为 Base64?

    我想将字符串转换为 Base64 我在几个地方找到了答案 但它在 Swift 中不再起作用 我使用的是 Xcode 6 2 我相信答案可能适用于以前的 Xcode 版本 而不适用于 Xcode 6 2 有人可以指导我在 Xcode 6 2
  • 从包含文件返回

    在 PHP 中 如何从包含的脚本返回到包含它的脚本 IE 1 主脚本 2 应用 3 包括 基本上 我想从 3 返回到 2 return 不起作用 2 应用程序中的代码 page User Manager if permission 13 1
  • TZupdater 因 tzdata2016g 版本失败

    TZUpdater 2 1 0 在 tzdata2016g 版本中失败 对于 Java 8 它会失败并显示 源目录不包含文件 VERSION 错误 而对于 Java 7 它会以 JRE 更新到版本 tzdataunknown 注释完成 其原
  • Firebase 可扩展性限制

    This post表示当单个节点开始拥有 1 10 百万个子节点时 FireBase 将遇到问题 如果应用程序中的用户超过 1000 万 应该如何处理 在所有示例中 我认为用户只是单个节点 用户 的子节点 Firebase 不适合处理长列表
  • 在 Emacs 上同时运行 Clojure 和其他 Lisp

    I use Aquamacs 并且 Aquamacs 预先配备了SLIME setq inferior lisp program usr local bin sbcl add to list load path Library Applic
  • 有没有可用于印度语言的词干分析器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有任何针对印度语言的词干分析器的实现 例如 印地语 泰卢固语 可用 印地语分析器 带有词干分析器 可在 Lucene 中使用 正是基于此算法 p
  • string1 >= string2 未在 Linq to SQL 中实现,有解决方法吗?

    如何在 Linq to SQL 中执行 string1 gt string2 如果您正在寻找 gt 通常会写成 gt 那么你不能直接用字符串来做到这一点 您可以通过以下方式获得相同的行为相比于 string1 CompareTo strin
  • 这是角度模板缓存清除的好方法吗?

    我正在尝试在我的角度应用程序上实现一些缓存清除 其方式仍然允许缓存 但在我们将新代码推送到生产环境时会破坏它 到目前为止 我的设置涉及使用 grunt 缓存破坏器https www npmjs org package grunt cache
  • 转到 HTML 中另一个页面的 div

    我想从不同的页面转到特定页面的 DIV 那可能吗 I tried a href file html product Hello a 但它只是去file html home thanks C 我的 file html 中有 但它不断被重定向到
  • Microchip PIC 的 Modbus 堆栈

    有人可以建议为 Microchip PIC18 处理器实现 Modbus RTU 从站的开源实现吗 我正在寻找 RS 232 RS 485 的 Modbus RTU 实现 但 Modbus TCP IP 实现也将受到欢迎 我已经为 PIC1
  • 如何在 IPython 笔记本中打开交互式 matplotlib 窗口?

    我正在使用 IPython pylab inline有时想要快速切换到交互式 可缩放的 matplotlib GUI 来查看绘图 当您在终端 Python 控制台中绘制某些内容时会弹出 我怎么能这么做呢 最好不要离开或重新启动我的笔记本 I
  • Android - 如何通过用户名以编程方式切换用户?

    我是 Android 新手 我必须在工作中创建一个执行以下任务的应用程序 我监听一个应该向我发送用户名的套接字 收到用户名后 我需要在平板电脑上切换到该用户帐户 如果我收到与当前活动用户相同的用户名 我不需要切换 显然 我们的平板电脑已获得
  • unaccent() 阻止 Postgres 中的索引使用

    我想从导入到 PostgreSQL 9 3 5 的 OpenStreetMap 数据库中检索给定名称的路线 操作系统是 Win7 64 位 为了具有一定的容错能力 我使用了 Postgres 的非重音扩展 我的查询如下所示 SELECT F
  • 使用补丁(Flask)进行单元测试行为

    我在尝试着patch我的 Flask api 中的方法 但似乎方法调用没有被替换 做app test client 做一些我所缺少的事情 例如 如果我跑 patch k stats mstats def test ps self mstat
  • 如果“设置”->“显示”->“显示尺寸”更改为“大”或“小”,则禁用应用程序或活动缩放

    在我的应用程序中 我不想允许它调整大小 因为它会产生设计问题 我尝试过android resizeableActivity false 在应用程序标签和启动器活动标签中 但它没有帮助 我已经找到了解决方案 如果系统文本大小更改或显示大小设置
  • socket.io 握手返回错误“传输未知”

    我正在尝试使用大象io将事件从我的 PHP 脚本发送到我的 Nodejs 服务器 使用这个库进行测试时 我注意到握手没有按预期发生 After 阅读有关客户端 服务器握手的规范使用socket io 我测试了对我的nodejs服务器的简单握
  • 春豆到底是什么?

    我还没有找到我能理解的 Spring bean 的高级定义 我在 Grails 文档和书籍中经常看到它们被引用 但我认为了解它们是什么会很有帮助 那么什么是Spring bean呢 如何使用它们 它们与依赖注入有什么关系吗 Spring核心
  • Symfony2:仅当复选框为真时,如何验证输入字段不为空?

    在 Symfony2 中 仅当复选框的值为 1 True 时 如何验证输入字段不是空白 否则允许空白 更准确地说 我有一个带有复选框的表单和一个带有文本类型的输入字段 在 Symfony 的实体上应该有一个检查 当复选框的值为 True 1
  • 根据接口生成表达式

    我遇到了例外无法将类型 MySomeTypeThatImplementsISomeInterfaceAndIsPassedAs T ToTheClass 转换为类型 ISomeInterface LINQ to Entities 仅支持转换