首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OData包括通过部分类添加到实体框架模型中的“自定义属性”

OData包括通过部分类添加到实体框架模型中的“自定义属性”
EN

Stack Overflow用户
提问于 2016-03-31 22:33:24
回答 2查看 2.9K关注 0票数 6

我创建了一个部分类文件来向实体框架生成的模型中添加新的属性。

我使用的是WebAPI + OData,而$metadata 没有列出我的新/自定义属性,因此它返回的JSON不包括我的新/自定义属性。

例如,假设我的实体是"Person“

"Person“有一个数据库属性: NumSpouses;在$metadata中返回的int,如下所示:<Property Name="NumSpouses" Type="Edm.Int32"/>

这很好,但是我将这样的属性添加到一个单独的文件,with a partial class:

代码语言:javascript
运行
复制
public partial class Person {
  ...
  public string MarriedStatus { 
     get { return this.NumSpouses==0 ? "Single" : "Married"; }
  }
  ... 
}

如何在我的OData响应中获得此属性?

<Property Name="MarriedStatus" Type="Edm.String"/>

目前,如果我要求MarriedStatus in $expand (就像一个NavigationProperty.).我不认为我会尝试$expand,就好像它神奇地提供了自定义属性一样),我会收到这样的消息:

代码语言:javascript
运行
复制
{
  "odata.error":{
    "code":"","message":{
      "lang":"en-US","value":"The query specified in the URI is not valid. Could not find a property named 'MarriedStatus' on type 'fakeDataModels.Person'."
},"innererror":{
  "message":"Could not find a property named 'MarriedStatus' on type 'fakeDataModels.Person'.","type":"Microsoft.Data.OData.ODataException","stacktrace":"   at ..."
    }
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-01 21:44:39

MarriedStatus是一个计算/只读属性。ASP.NET实现的OData目前不支持这样的属性。作为解决办法,添加一个抛出NotImplementedException的setter。

代码语言:javascript
运行
复制
    public string MarriedStatus {
        get { return this.NumSpouses > 0 ? "Married" : "Single"; }
        set { throw new NotImplementedException(); }
    }

或者,如果您使用的是OData V4,则可以对MarriedStatus进行注释以指定其计算结果。见Yi Ding's answer to OData read-only property。但是注释只是建议性的;它并不阻止客户端尝试设置计算的属性(例如,在POST请求中)。

票数 6
EN

Stack Overflow用户

发布于 2018-02-09 09:21:09

除了安切斯特的回答。您应该使用的忽略()函数,而不是NotMapped属性。因为OData查找此属性以忽略序列化的属性。如果您使用fluent API,您将不会遇到这个问题。

代码语言:javascript
运行
复制
dbModelBuilder.Entity<TEntity>()
    .Ignore(i => i.ComputedProperty);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36344979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档