使用实体框架的WCF数据服务中的业务逻辑在哪里?

使用实体框架的WCF数据服务中的业务逻辑在哪里?,wcf,entity-framework,entity-framework-4,wcf-data-services,odata,Wcf,Entity Framework,Entity Framework 4,Wcf Data Services,Odata,我正在研究如何围绕实体框架上下文创建WCF数据服务,以及如何将其作为EF上下文使用 我真的刚开始考虑这个问题,但我想知道业务逻辑会走向何方?作为一项服务,我希望您不能在没有验证的情况下随意添加/删除等 如果我编写了一个MVC应用程序来使用这项服务,我将如何最好地实现业务逻辑。不是可以使用属性进行的简单属性级验证,而是需要首先检查数据存储等更复杂的内容。您可以在数据服务类中添加一些验证,但您在其中可以做什么和不能做什么受到限制。当然,你可以把一些放在客户端的服务之上,但这也不理想 我在WCF数据

我正在研究如何围绕实体框架上下文创建WCF数据服务,以及如何将其作为EF上下文使用

我真的刚开始考虑这个问题,但我想知道业务逻辑会走向何方?作为一项服务,我希望您不能在没有验证的情况下随意添加/删除等


如果我编写了一个MVC应用程序来使用这项服务,我将如何最好地实现业务逻辑。不是可以使用属性进行的简单属性级验证,而是需要首先检查数据存储等更复杂的内容。

您可以在数据服务类中添加一些验证,但您在其中可以做什么和不能做什么受到限制。当然,你可以把一些放在客户端的服务之上,但这也不理想

我在WCF数据服务上只花了几周时间,但您强调了它的一个大问题——缺乏灵活性。对于快速开发和开发LOB应用程序来说,这非常棒,但是任何经过深思熟虑的设计都很难实现。我需要在我的实体模型中包含对象,只是为了允许它们通过服务公开,而我在尝试用一个简单的属性扩展这些类时遇到了巨大的麻烦


我只建议将WCF数据服务用于需要极快开发的简单应用程序,例如一到两天的开发周期。通过常规的WCF服务,编写自己的数据层等等,任何其他事情都值得彻底完成。

您可以将一些放在数据服务类中,但您只能在那里做什么和不能做什么。当然,你可以把一些放在客户端的服务之上,但这也不理想

我在WCF数据服务上只花了几周时间,但您强调了它的一个大问题——缺乏灵活性。对于快速开发和开发LOB应用程序来说,这非常棒,但是任何经过深思熟虑的设计都很难实现。我需要在我的实体模型中包含对象,只是为了允许它们通过服务公开,而我在尝试用一个简单的属性扩展这些类时遇到了巨大的麻烦


我只建议将WCF数据服务用于需要极快开发的简单应用程序,例如一到两天的开发周期。通过常规的WCF服务、编写自己的数据层等等,任何其他事情都值得彻底完成。

听起来您需要一个定制的数据服务提供商。它们非常强大,可以让你完全控制你的阅读/写作逻辑


例如,我编写了一个在更新提供程序中强制执行许可逻辑的程序

听起来您需要一个定制的数据服务提供商。它们非常强大,可以让你完全控制你的阅读/写作逻辑


例如,我编写了一个在更新提供程序中强制执行许可逻辑的程序

根据您的具体需要,听起来Web API可能非常适合。WebAPI可能永远无法获得WCF数据服务所拥有的全部OData支持,但它确实使某些事情变得更容易(比如添加业务逻辑)。我很有信心Web API对OData的初始支持将覆盖大量的用例,并且这种支持将随着时间的推移而增长。

根据您的具体需求,Web API听起来可能是一个不错的选择。WebAPI可能永远无法获得WCF数据服务所拥有的全部OData支持,但它确实使某些事情变得更容易(比如添加业务逻辑)。我很有信心Web API对OData的初始支持将覆盖大量的用例,并且这种支持将随着时间的推移而增长。

而定制数据提供商肯定会满足您的任何需求,如果您有一个复杂的体系结构,它可能是一个很好的解决方案,当我试图通过客户端进行保存,发现必须将iUpdateable接口作为上下文的一部分来实现时,我并没有感到非常激动。(我试图用上下文和数据服务构建一个存储库模式)


我相信它对很多人都非常有用,但我只需要EntityProvider已经包含的功能,在我的项目计划中没有时间计算自定义提供者的IUpdataable部分,所以我的团队,坚持使用实体提供者,并使用更改和查询拦截器通过服务器上的业务逻辑类路由数据服务请求。它提供了一个中心控制点。我们使用它们来提供安全检查、运行计算和其他插入/更新操作等,结果非常好。您还可以使用服务方法作为向客户提供特定业务逻辑功能的另一种方式。

而定制数据提供商无疑可以满足您的任何需求,如果您有一个复杂的体系结构,它可能是一个很好的解决方案,当我试图通过客户端进行保存,发现必须将iUpdateable接口作为上下文的一部分来实现时,我并没有感到非常激动。(我试图用上下文和数据服务构建一个存储库模式)

我相信它对很多人都非常有用,但我只需要EntityProvider已经包含的功能,在我的项目计划中没有时间计算自定义提供者的IUpdataable部分,所以我的团队,坚持使用实体提供者,并使用更改和查询拦截器通过服务器上的业务逻辑类路由数据服务请求。它提供了一个中心控制点。我们使用它们来提供安全检查、运行计算和其他插入/更新操作等,结果非常好。您还可以使用服务方法作为向您的c语言提供特定业务逻辑功能的另一种方式