我觉得我可能在这里遗漏了一些关键的东西(或者只是简单的),但是我无法让它工作。
鉴于我已经创建了一个 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
属性,该属性连接 FirstName
和 LastName
。
无论如何,我继续我的业务,继续部分
类(当然在同一个命名空间中)
public partial class Person {
public string FullName {
get { return this.FirstName + " " + this.LastName; }
}
}
但是,当我在服务中查询Person
实体时,没有FullName
。当我查询服务的 $metadata
时,没有定义 FullName
。
需要做什么(如果有的话)来支持这个?
注意事项
- 所有实体都可以通过
config.SetEntitySetAccessRule("*", EntitySetRights.All);
看到
- 我尝试使用各种属性进行装饰,但没有成功,包括属性上的
EdmScalarPropertyAttribute
和DataMemberAttribute
。
最佳答案
除非它在 .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/