代码之家  ›  专栏  ›  技术社区  ›  Fabrice

如何在数据服务(OData)中创建计算属性?

  •  7
  • Fabrice  · 技术社区  · 14 年前

    我正在使用EDMX使用WCF数据服务创建OData服务。如何为实体类型创建计算属性,使其值在服务(C#)中计算而不是来自数据库?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Alex James    14 年前

    如果使用数据服务的默认实体框架提供程序直接公开EDMX文件,则如下所示:

    public class MyService: DataService<MyEntities> {
    

    不幸的是,您不能公开任何不在底层实体框架EDM模型中的“新”属性。

    已经说过您有其他选项,您可以编写一个反射提供程序或自定义提供程序,添加额外的属性并将大部分工作委托给引擎盖下的EF。

    问题是,今天组建代表团并非易事。

    这个 series of posts 解释提供程序并演示如何创建基于提供程序的自定义服务,以及 one shows 如何使用反射提供程序创建服务。

        2
  •  2
  •   Fabrice    14 年前

    我找到的解决方案是先使用实体框架代码,而不是EDMX。它允许您仅通过在代码中创建标准属性来创建计算属性。
    下面是一个例子:

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