Web Api 2 Odata 控制器 Post/Put Relationsips/Link/Refs 带 Switch 语句
WepApi 2 Odata Controller Post/Put Relationsips/Link/Refs with Switch Statement
在 WebApi 2+ 控制器中使用 OData V3(#ref) 或 V4(#links) 和处理关系:
Switch 语句是唯一的方法吗?
这 2 个资源似乎表明每个导航都有一个 switch case 的必要性 属性。
- Entity Relations in OData V3
-
switch (navigationProperty)
{
case "Supplier":
// Note: The code for GetKeyFromUri is shown later in this topic.
var relatedKey = Helpers.GetKeyFromUri<int>(Request, link);
var supplier = await db.Suppliers.SingleOrDefaultAsync(f => f.Id == relatedKey);
if (supplier == null)
{
return NotFound();
}
product.Supplier = supplier;
break;
default:
return StatusCode(HttpStatusCode.NotImplemented);
}
问题:我是否应该为每个导航硬编码一个 switch 语句 属性,如果是这样,有没有办法让这个自动神奇的脚手架?
我遇到了这样的问题 (v4),我使用基本控制器 example 解决了它。有 2 个基本控制器:用于导航(您的情况)和 CRUD 操作 - 第 3 个是使用示例。代码不是很干净(我一直试图删除不必要的细节)但我认为这个想法很清楚。我不认为这是解决这个问题的最好方法,但我还没有找到任何更简单的方法来通过字符串添加和删除属性。我想知道更优雅的答案。对不起我的英语。
在 WebApi 2+ 控制器中使用 OData V3(#ref) 或 V4(#links) 和处理关系:
Switch 语句是唯一的方法吗?
这 2 个资源似乎表明每个导航都有一个 switch case 的必要性 属性。
- Entity Relations in OData V3
-
switch (navigationProperty) { case "Supplier": // Note: The code for GetKeyFromUri is shown later in this topic. var relatedKey = Helpers.GetKeyFromUri<int>(Request, link); var supplier = await db.Suppliers.SingleOrDefaultAsync(f => f.Id == relatedKey); if (supplier == null) { return NotFound(); } product.Supplier = supplier; break; default: return StatusCode(HttpStatusCode.NotImplemented); }
问题:我是否应该为每个导航硬编码一个 switch 语句 属性,如果是这样,有没有办法让这个自动神奇的脚手架?
我遇到了这样的问题 (v4),我使用基本控制器 example 解决了它。有 2 个基本控制器:用于导航(您的情况)和 CRUD 操作 - 第 3 个是使用示例。代码不是很干净(我一直试图删除不必要的细节)但我认为这个想法很清楚。我不认为这是解决这个问题的最好方法,但我还没有找到任何更简单的方法来通过字符串添加和删除属性。我想知道更优雅的答案。对不起我的英语。