计算字段和OData / WCF数据服务

时间:2012-04-18 11:58:49

标签: .net wcf entity-framework wcf-data-services odata

我正在尝试将一些计算字段添加到我使用WCF数据服务外部公开的Entity Framework模型中,我遇到的问题是我尝试的任何内容都不会暴露在我的服务之外。

我尝试添加以下代码(注意:实际方法在get / set方法中有业务逻辑):

public partial class myClass
{
    [DataMember]
    public string Foo { get; set; }
}

然而OData仍未返回该字段,似乎OData只查看.edmx。

目前我能想到解决此问题的唯一方法是实现CLR function并让我的实体框架模型查看SQL view,它为每个返回的行调用我的函数并计算值在服务器端,并使用存储过程来更新实体。但我宁愿不必经历所有这些,因为它实际上是一个简单的(在.NET中,但在SQL中不是这样)计算字段。

我可以使用哪些其他选项来计算此字段?

1 个答案:

答案 0 :(得分:0)

如果提供商是EF,那么WCF DS只会查看csdl。

所以你有几个选择

  • 继续使用EF提供程序并以某种方式将列添加到CSDL。我看到人们在做的是在DB中添加列,但是将它们留空并在EF类中计算它们(例如)。但我确信还有其他方法可以做到这一点。

  • 使用自定义提供程序,在这种情况下,您可以完全控制所有内容,但是通过基于EF的投影实现这一目标的工作量非常大。因此,除非你遇到其他问题,否则我不会走那条路。