c# - 在 WCF 数据服务中公开实体的其他属性

标签 c# asp.net entity-framework wcf-data-services

我觉得我可能在这里遗漏了一些关键的东西(或者只是简单的),但是我无法让它工作。


鉴于我已经创建了一个 ASP.NET (.NET 4.0) Web 应用程序项目,我在其中托管了一个 WCF 数据服务。 我已经从现有数据库生成了 POCO 实体的 EF 5.0 模型,并且像往常一样,实体类是部分

我想,

Gee, I'll "extend" these partial classes to expose additional (non-persisted, calculated) properties* in the data service.

* 为了简洁起见,我们假设一个 Person 实体,我想向其添加一个 FullName 属性,该属性连接 FirstNameLastName

无论如何,我继续我的业务,​​继续部分类(当然在同一个命名空间中)

public partial class Person {
    public string FullName {
        get { return this.FirstName + " " + this.LastName; }
    }
}

但是,当我在服务中查询Person 实体时,没有FullName。当我查询服务的 $metadata 时,没有定义 FullName

需要做什么(如果有的话)来支持这个?


注意事项

  • 所有实体都可以通过 config.SetEntitySetAccessRule("*", EntitySetRights.All);
  • 看到
  • 我尝试使用各种属性进行装饰,但没有成功,包括属性上的 EdmScalarPropertyAttributeDataMemberAttribute

最佳答案

除非它在 ​​.NET 4.5 中有所改变(我没看过),否则我认为这行不通。 DataService<T>极其有限。它甚至不支持所有 EF 功能。数据服务本身非常灵活,并且you can define an entirely custom service which returns anything you want .但是你不会得到你的 EF 上下文的“自动”映射。

所以很遗憾,您必须在“简单但有限”和“困难但灵活”之间做出选择,几乎没有任何选择。

关于c# - 在 WCF 数据服务中公开实体的其他属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13378698/

相关文章:

asp.net - word-wrap 不是已知的 CSS 属性名称

c# - 在 C# 中的自定义验证属性中使用异步方法

c# - 为什么第二个列值没有插入到我的数据库中?

c# - C# 中推荐的 IRepository 和 IRepository<T> 接口(interface)

c# - Entity Framework Core 2.1 中的多级模型类

c# - 您在 C# 的 Program.cs 中放入了哪些常用例程

c# - 在 Visual Studio 2017(版本 15.5.1)中隐藏 XML 注释

c# - Entity Framework 分组依据和实际 SQL 未有效编写

.net - 当我从控制台运行 EF 代码迁移时 - 输入字符串格式不正确错误

c# - 如何从代码启动 Windows Azure 存储模拟器 V3.0