2012-04-18 68 views
0

我想添加一些计算的字段到我的实体框架模型,暴露在外部使用WCF数据服务,我遇到的问题是,我尝试的任何东西都不暴露在我的服务。计算字段和OData/WCF数据服务

我曾尝试加入如下代码(注:实际方法的get/set方法的业务逻辑):

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

但是现场依然没有通过的OData返回的,它似乎只的OData看着.edmx。

目前唯一可以考虑解决的方案是实现CLR function并让我的实体框架模型查看SQL view,该函数为每个返回的行调用我的函数并计算服务器端的值,并使用存储过程来更新实体。但我宁愿不必为了实际上简单(在.NET中,但在SQL中不是这样)计算字段来完成所有这些。

还有什么其他选择可以让我计算这个领域?

回答

0

你说的对,如果提供者是EF,WCF DS只查看csdl。

所以,你有几个使用EF提供商,不知何故选择

  • 保持添加列到CSDL。我看到人们正在向数据库中添加列,但将它们留空并在EF类中计算它们(例如)。但我相信还有其他方法可以做到这一点。

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

+0

对于第一种方式,如果我的WcfDataService/Entity Context将这些东西全部从我这里抽象出来,我该如何/在哪里计算这些字段?似乎没有任何位置可以在我的'WcfDataService'或我的类型的'partial class'中设置值或调用方法。 – Seph 2012-04-18 12:31:09

+0

EF生成的类通过WCF DS公开。这些课程存在于您的项目中。您可以修改它们以生成属性。 – 2012-04-18 16:13:39