Entity framework 4 WCF数据服务公开EF4模型的自定义部分方法时出现问题

Entity framework 4 WCF数据服务公开EF4模型的自定义部分方法时出现问题,entity-framework-4,wcf-data-services,Entity Framework 4,Wcf Data Services,我正在探索使用WCF数据服务和EF4实现web服务api的想法。意识到一些操作需要复杂的业务逻辑,我决定创建一个与主EF数据上下文部分类同名的部分类,并在那里实现其他方法来处理更复杂的业务逻辑。当直接使用EF上下文对象时,会显示附加方法(通过intellisense)并正常工作。当EF类通过WCF数据服务公开,并且在另一个项目中创建和使用服务引用时,新方法不会出现在intellisense或生成的Service.cs文件中(当然,我更新了引用,甚至删除了它并重新添加了它)。本机数据方法(即con

我正在探索使用WCF数据服务和EF4实现web服务api的想法。意识到一些操作需要复杂的业务逻辑,我决定创建一个与主EF数据上下文部分类同名的部分类,并在那里实现其他方法来处理更复杂的业务逻辑。当直接使用EF上下文对象时,会显示附加方法(通过intellisense)并正常工作。当EF类通过WCF数据服务公开,并且在另一个项目中创建和使用服务引用时,新方法不会出现在intellisense或生成的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框架在公开的数据对象上提供查询机制的想法,以及您可以拥有一个restful web服务以及SOAP的一些好处。

服务操作只有在派生自DataService的类上存在时才能被识别。WCF数据服务将不会查看这些内容的上下文类。还请注意,默认情况下不会公开方法,您需要使用WebGet或WebInvoke对它们进行属性化,并允许在InitializeService实现中访问它们。

谢谢您的回复。我在MSDN Data Developer站点的数据服务部分问了同样的问题:。我在那里得到的答案与你的答案相似(更详细一点)。对于阅读本文的其他人,以下是一些有关服务操作的有趣信息: