使用oData映射复杂的数据访问业务逻辑

使用oData映射复杂的数据访问业务逻辑,odata,netweaver,Odata,Netweaver,我有一个DB表格,我想用oData显示/编辑数据。 我不想简单地用EntitySet公开行,因为我的业务逻辑会向每行的每个字段添加信息: 例如。我在DB中有一个包含3行的表: k c1 c2 c3 c4 ---------------------- 01 a b d e 02 f g h i 03 l m n o 04 p q r s 用户可以: 对每个字段的完全控制(创建-读取-更新-删除)(不

我有一个DB表格,我想用oData显示/编辑数据。 我不想简单地用EntitySet公开行,因为我的业务逻辑会向每行的每个字段添加信息:

例如。我在DB中有一个包含3行的表:

k   c1   c2   c3   c4
----------------------
01  a    b    d    e
02  f    g    h    i
03  l    m    n    o
04  p    q    r    s
用户可以:

  • 对每个字段的完全控制(创建-读取-更新-删除)(不修改-编辑键,但可以删除行)
用户B可以:

  • 仅编辑第二行
UserC可以:

  • 仅编辑m、n和r
如何使用oData发送此复杂性?

  • 如何识别已登录的用户?(http GET oData EntitySet标头中的sessionId字符串?)
  • 在元数据中,我可以公开与数据的不同类型的交互吗
  • 如果我想指定一个精确的CRUD信息(UserB),我如何传递信息?(使用复杂类型?)

  • 这些是我的问题。我喜欢oData,尤其是元数据的完整描述性概念,但它似乎与我的数据访问复杂性不符

    能否为每个用户添加三个端点?例如:用户A:~/usera/。。。用户B:~/userb/。。。用户C:~/userc/。。。如果有的话#1是可见的。对于#2,您可以构建不同的Edm模型。对于#3,你能分享更多关于精确积垢的信息吗?谢谢@SamXu!你说的三个终点是什么意思?我的意思是你能做到以下几点吗?>config.MapODataService(“usera”,“usera”,usera_Model);>config.MapODataService(“userb”,“userb”,userb_Model);>config.MapODataService(“userc”、“userc”、userc\u模型);