7

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

4

2 回答 2

3

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

public class MyService: DataService<MyEntities> {

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

话虽如此,您还有其他选择,您可以编写一个反射提供程序或自定义提供程序,以添加额外的属性并将大部分工作委托给 EF。

问题是今天设置所有代表团并不容易。

这一系列文章解释了提供者并展示了如何创建基于自定义提供者的服务,而这篇文章展示了如何使用反射提供者创建服务。

于 2010-10-05T15:10:29.737 回答
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; }
  }
}
于 2010-10-06T08:14:01.570 回答