0

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

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

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

但是 OData 仍然没有返回该字段,似乎 OData 只查看 .edmx。

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

计算此字段时,我还有哪些其他选择?

4

1 回答 1

0

没错,如果提供者是 EF,WCF DS 只会查看 csdl。

所以你有几个选择

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

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

于 2012-04-18T12:11:25.813 回答