将自定义导航属性添加到 OData Web API 控制器

2024-05-20

我有一个 OData v3 Web API 项目。它使用实体框架代码优先模型。

主要类别是Coupon。它有一个列表。这实际上是子类型 ItemRequirement 和 BasketRequirement 的 2 元素集合。我希望能够说:

../odata/Coupons(5)/ItemRequirement

我无法让它工作。

首先,在 EF 类中,我添加了 ItemRequirement 作为 [NotMapped] 属性(因为该类已经具有基类的集合作为导航属性,并且添加其他两个作为属性只会生成无关的表键并造成混乱数据库不必要。Code First 中的 Table-Per-Hierarchy 工作得很好)。

ODataConventionModelBuilder() 没有选择 ItemRequirement 作为导航属性

我尝试添加它:

// GET odata/Coupons(5)/ItemRequirement
public ItemRequirement GetItemRequirement( [FromODataUri] decimal key)
{
   return db.Coupons.Where(m => m.CouponId == key).SelectMany(m => m.RedemptionPurchaseRequirements).OfType<ItemRequirement>().FirstOrDefault();
}

URI 永远不会进入此代码。我通过添加 IODataRoutingConvention 实现器发现 ODataPath 设置为 navigation/key/unresolved。

我查看了这个解决方案,它也没有帮助我:

将自定义查询支持的导航属性添加到 ODataConventionModelBuilder https://stackoverflow.com/questions/23082927/adding-a-custom-query-backed-navigation-property-to-odataconventionmodelbuilder

我不知道问题是否在于继承、属性未在 EF 中映射,或者什么。

我还发现此操作失败并出现 404:

oData/PurchaseRequirementsBases(5)/myNamespace.ItemRequirement

到底需要什么魔法才能将集合抽象出来,以便 OData 使用者可以将 ItemRequirement 视为 Coupon 的有效属性?


您可以尝试显式添加导航属性吗?

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

将自定义导航属性添加到 OData Web API 控制器 的相关文章

随机推荐

  • 您上传的 APK 未对齐 zip 错误

    我刚刚通过android studio完成并签署了apk 然后我通过 apkprotect com 做了一个 apk 保护 当我尝试将 apk 上传到 Play 商店时 出现此错误 您上传的 APK 未进行 zip 对齐 您需要在 APK
  • 如何在MFC中对CListCtrl中的Item进行排序?

    我在 MFC 中制作了一个基于对话框的应用程序 我将 CListCtrl 控件放在对话框上 并将其视图样式设置为报告类型 我在此列表视图中有五列 所有列都是字符串类型 我想在此列表中实现排序 也就是说 当我单击某一列时 它应该对列表中的项目
  • 停止 Netbeans 发出蜂鸣声

    在 Windows 7 上 当我在已保存的文件上持续按 Ctrl S 时 将播放 Windows 错误声音 这非常烦人 而且当我习惯在工作期间不断按 Ctrl S 时 这会让人分心 有没有办法禁用这个烦人的features 出色地 这可能会
  • 引起原因:com.google.crypto.tink.shaded.protobuf.InvalidProtocolBufferException:协议消息包含无效标签(零)

    启动活动时 我的应用程序在 getEncryptedSharedPrefs 处崩溃 if getEncryptedSharedPrefs getString pinSettingsLogin isEmpty getEncryptedShar
  • 为什么我应该关心压缩 MS Access .mdb 文件?

    我们分发一个使用 MS Access mdb 文件的应用程序 有人注意到 在 MS Access 中打开文件后 文件大小缩小了很多 这表明该文件是压缩的良好候选者 但我们不为用户提供执行此操作的方法 所以 我的问题是 这重要吗 我们关心吗
  • 匿名函数声明简写 javascript

    我想知道是否有任何方法可以通过使用像 Google Closure 这样的预处理器 编译器来缩短 JavaScript 中的匿名函数声明 我认为这对于回调来说会非常整洁 例如 通常我会这样编写 qunit 测试用例 test Dummy t
  • 选定的图像未在 mainActivity 中显示

    为什么所选的图像没有显示在Claims java 我错过了什么吗 清单文件
  • Elm 调试器侧边栏太小。如何扩展呢?

    我有很长的消息 除了最后一部分之外 它们都是相同的 正如您在下面看到的 我无法区分 它们实际上是不同的 I ve open up the debugger with chrome and i saw this 但这在页面重新加载时不起作用
  • 使用 GTK+ 使用 gtk_event_put 和 GdkEventButton 结构模拟按钮单击

    这是后续如何将合成鼠标事件插入 X11 输入队列 https stackoverflow com questions 10319519 how to insert synthetic mouse events into x11 input
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • Java JDBC 准备语句最大参数标记

    我使用构建一个大型数据库调用PreparedStatement有 2000 多个参数标记 我收到这个错误 Caused by java sql SQLException Prepared or callable statement has
  • 如何在文本区域中使用除“文本插入符号”之外的透明字体?

    我有一个简单的文本区域 我需要制作透明字母 同时允许文本插入符可见 当我应用以下规则时 我会得到隐形插入符 textarea background transparent opacity 0 当我键入不可见文本时 我需要看到文本插入符移动
  • 我如何将图像保存为RelativeLayout [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何将相对布局保存为位图图像 在运行
  • JSON 解析错误:需要“STRING”

    我在用JSONLint http jsonlint com 解析一些 JSON 我不断收到错误 错误 第 1 行解析错误 产品 需要 STRING 却得到 未定义 这是代码 product code Abc123 description S
  • 错误:执行命令“ant”,请确保已安装 ant 并将其添加到路径中

    我正在使用 Cordova 进行移动应用程序开发 我已经使用 npm 命令安装了 Cordova 安装后 我创建了一个 cordova 项目 每当我尝试向项目添加平台 android 时 它都会抛出以下错误 错误 执行命令 ant 请确保已
  • 从 datagridview C# 中检索数字值

    我正在尝试从 datagridview 检索数值 表中的值和变量 weeklyTotal 的数据类型都是整数 我也试图将其转换为整数 我浏览了整个网站是否有类似的问题 但没有一个解决方案有帮助 我收到的错误消息是 当转换为数字时 该值必须小
  • 在 Delphi 中淡入 alpha 混合 PNG 表单

    几年前 当 Vista 首次发布时 我曾提出过这个问题 但始终没有解决这个问题 并把它搁置起来 留待以后再考虑 我有一个启动屏幕 我花了很大力气让它看起来很棒 这是 32bpp alpha 混合的 PNG 我有一些代码 如果需要 我可以挖掘
  • 以编程方式将 Windows 服务添加到 Windows 防火墙(在安装期间)[重复]

    这个问题在这里已经有答案了 可能的重复 以编程方式将应用程序添加到 Windows 防火墙 https stackoverflow com questions 113755 programmatically add an applicati
  • Javascript Ajax 优雅降级,不同页面?

    我开始更加关注如何让我的 javascript 和 ajax 优雅地降级 比较推荐哪个 致力于将优雅降级合并到现有代码中 可能很棘手 或者 为非 js 用户开发一组不同的页面 我倾向于不同的页面集 因为我觉得它更容易 并且我可以为每种用户类
  • 将自定义导航属性添加到 OData Web API 控制器

    我有一个 OData v3 Web API 项目 它使用实体框架代码优先模型 主要类别是Coupon 它有一个列表 这实际上是子类型 ItemRequirement 和 BasketRequirement 的 2 元素集合 我希望能够说 o