我在探讨使用WCF数据服务和EF4实现Web服务API的想法。由于意识到某些操作需要复杂的业务逻辑,我决定创建一个与主要EF数据上下文部分类同名的部分类,并实现其中的附加方法来处理更复杂的业务逻辑。当直接使用EF上下文对象时,附加方法显示(通过智能感知)并正常工作。当通过WCF数据服务公开EF类并在另一个项目中创建并使用服务引用时,新方法不会显示在智能感知或生成的Service.cs文件中(当然,我更新了引用,甚至删除它并重新添加它)。本地数据方法(即context.AddObject()和context.AddToPeople())可以正常工作,但新方法甚至不可用。WCF数据服务暴露EF4模型的自定义部分方法的问题
我的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.任何想法为什么网络服务没有看到添加的部分类,但直接使用EF对象的方法是否存在并正常工作? 2.是否使用带有其他方法的分部类可以很好地解决使用EF生成的模型处理复杂业务规则的问题?
我喜欢让oData框架在公开的数据对象上提供查询机制的想法,以及您可以拥有一个具有SOAP的一些好处的平稳Web服务的事实。
感谢您的回复。我在MSDN Data Developer网站的数据服务部分询问了同样的问题:http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataservices/threads。我到那里的答案与你的答案类似(更详细一点)。对于阅读此主题的其他人,以下是有关服务操作的一些有趣信息:http://blogs.msdn.com/b/writingdata_services/archive/2011/03/28/calling-service-operations-from-the-client.aspx –