如何在Data Services(OData)中创建计算属性?

时间:2010-10-05 11:15:12

标签: wcf-data-services odata edmx

我正在使用EDMX创建一个带有WCF数据服务的OData服务。如何为实体类型创建计算属性,以便在服务(C#)中计算其值并且不是来自数据库? 此属性的值基于其他属性的值,这些属性将映射到数据库中的字段。

2 个答案:

答案 0 :(得分:3)

如果您使用默认的数据服务实体框架提供程序直接公开您的EDMX文件,请执行以下操作:

public class MyService: DataService<MyEntities> {

然后遗憾的是,您无法公开任何不在基础Entity Framework EDM模型中的“新”属性。

说过你还有其他选择,你可以编写一个反射提供者或自定义提供者来添加额外的属性,并将大部分工作委托给EF。

问题是今天建立所有代表团并不容易。

series of posts解释了提供商并展示了如何创建基于自定义提供程序的服务,以及one shows如何使用Reflection Provider创建服务。

答案 1 :(得分:2)

我找到的解决方案是使用Entity Framework Code First而不是EDMX。它允许您仅通过在代码中创建标准属性来创建计算属性 这是一个例子:

public class Person
{
  public String FirstName { get; set; }
  public String LastName { get; set; }
  public String FullName
  {
    get { return FirstName + " " + LastName; }
  }
}