Dynamics crm 2011 OrganizationServiceContext的生存期-CRM Dynamics 2011

Dynamics crm 2011 OrganizationServiceContext的生存期-CRM Dynamics 2011,dynamics-crm-2011,Dynamics Crm 2011,这更多的是一个非技术问题 我们打算将OrganizationServiceContext与Linq一起使用,而不是调用OrganizationServiceProxy 我的问题是:上下文的生命周期应该是什么?它应该每个方法实例化一次,还是可以使用单例方法在web应用程序的整个生命周期中保持它 利/弊是什么?有什么建议吗 提前感谢在web应用程序的生命周期中,您不应该保留数据上下文。应用程序生命周期在代码之外进行管理 当其他用户同时保存更改时,保存更改也是一个痛苦的世界。DataContext应始

这更多的是一个非技术问题

我们打算将OrganizationServiceContext与Linq一起使用,而不是调用OrganizationServiceProxy

我的问题是:上下文的生命周期应该是什么?它应该每个方法实例化一次,还是可以使用单例方法在web应用程序的整个生命周期中保持它

利/弊是什么?有什么建议吗


提前感谢

在web应用程序的生命周期中,您不应该保留数据上下文。应用程序生命周期在代码之外进行管理

当其他用户同时保存更改时,保存更改也是一个痛苦的世界。DataContext应始终仅在请求的生命周期内进行管理,并且在处理其他人的请求时,运行save changes不应保存这些请求中的数据

如果要减少读取,请使用缓存。
如果您想管理并发,请使用一个工作单元的事务。

仅对Gats的答案进行一点扩展,这是完全正确的,我们为我们拥有的每个单独的方法创建了新的上下文对象。即使对于Silverlight,我们知道我们一次只为一个用户运行,在任何时候管理上下文中的内容都是非常痛苦的,只是为了避免创建新的上下文对象。

这是“保存更改”的一个好观点。与大多数其他CRM一样,我们一次至少有20人使用该系统。感谢Gats+Matt,我只是想知道,创建每个工作单元或每个方法的上下文有哪些缺点?每个工作单元需要更多的工程和更聪明的设计。缺点是它可能会导致复杂的场景,如控制反转(流行,但要小心,因为线程问题可能会在您不知道的情况下突然出现)。简单地说,工作单元需要更多的工程设计,每个方法的方法更易于管理,但可能会导致大量代码和数据库流量的显著增加。没有简单的答案,但对于需要在高流量下运行的网站,您必须将工作单元视为一个选项。