【发布时间】:2011-08-31 21:52:14
【问题描述】:
我正在探索使用 WCF 数据服务和 EF4 实现 Web 服务 api 的想法。意识到某些操作需要复杂的业务逻辑,我决定创建一个与主 EF 数据上下文分部类同名的分部类,并在那里实现其他方法来处理更复杂的业务逻辑。当直接使用 EF 上下文对象时,附加方法会显示(通过智能感知)并正常工作。当通过 WCF 数据服务公开 EF 类并在另一个项目中创建和使用服务引用时,新方法不会出现在智能感知或生成的 Service.cs 文件中(当然,我更新了引用,甚至删除它并重新添加它)。本机数据方法(即 context.AddObject() 和 context.AddToPeople())正常工作,但新方法甚至不可用。
我的 EF 类看起来像这样:
namespace PeopleModel
{
//EF generated class
public partial class PeopleEntities : ObjectContext
{
//Constructors here
//Partial Methods here
//etc....
}
//Entity classes here
//My added partial class
public partial class PeopleEntities
{
public void AddPerson(Person person)
{
base.AddObject("People", person);
}
}
}
.svc 文件没有什么特别之处。包含自动生成的代理类的 Reference.cs 文件没有新的“AddPerson()”方法。
我的问题是: 1. 知道为什么 Web 服务没有看到添加的部分类,但是当直接使用 EF 对象时,该方法就在那里并且可以正常工作? 2. 使用带有附加方法的分部类是否可以很好地解决使用 EF 生成的模型处理复杂业务规则的问题?
我喜欢让 oData 框架为公开的数据对象提供查询机制的想法,以及您可以拥有一个具有 SOAP 一些好处的宁静 Web 服务这一事实。
【问题讨论】:
标签: entity-framework-4 wcf-data-services