当我们希望在C#中开发一个客户关系管理库(经理)时,我们将面临这样的问题:它将支持与多个客户关系管理系统的通信--即当您同时运行多个客户关系管理实例(例如两个不同的组织)的情况。
客户关系管理图书馆所需经费:
我们已经设计了一个解决方案,它现在能够与两个不同的CRM系统通信,但是它不能为特定的帐户使用已实现的接口,请参阅所附的解决方案,其中包含代码的注释。
在这里可以找到解决办法:
解决办法说明:
CRM_BusinessLogic -包含CRMManager,它保存通信的所有方法,并在构造函数中初始化正确的数据上下文。
CRM_Interfaces -包含所有生成的接口,这些接口是实体文件解析的结果(这必须使用单独的解析工具)。现在只包含iCRMAccount,只包含两个组织共有的一个属性和iCRMContext,后者包含在两个数据上下文中实现的实体--现在这两个上下文都实现了相同的实体帐户。
CRM_SCEurope -包含为第一个CRM组织CRM_SCEurope SCEuropeEntities.cs生成的实体文件,由解析工具生成的数据上下文(根据在组织上下文中存在的实体实现接口列表)- SCEuropeContext_generated和SCEuropeContext.cs返回正确的程序集。
CRM_SoSW -与CRM_SCEurope相同的内容,包含与第二个CRM组织相关的数据。
CRM_Test -包含测试控制台应用程序,它将与两个组织进行通信。
请注意,所附解决方案只包含只有名称参数的帐户实体,这足以用于设计解决方案的基本测试。
注意:在运行项目之前,您必须在Program.cs文件(CRM_Test项目)中为经理设置凭据。
如您所见,如果帐户数据是使用已实现接口SoSwContext的生成的部分类(SCEuropeContext,iCRMContext )从客户关系管理加载的,则应用程序将抛出一个异常“无效'where‘条件。实体成员正在调用无效的属性或方法--请参见方法实现。”
如果有人能找到解决这个例外的办法,我们将不胜感激。
谢谢
铺设
发布于 2013-05-13 12:31:24
对于我现在的雇主来说,他们有多个CRM组织,有些几乎是相同的,我们实际上能够使用完全相同的早期绑定类,使用20行定制代码来处理这些差异。其他组织则不然,因此我们有一个单独的dll,其中包含一个特定于组织的名称空间,该名称空间包含生成的早期绑定类型。它们不可能都位于同一个dll中是没有理由的,但是如果它们都位于同一个命名空间中,则会有问题,因为每个名称空间都会为联系人、约会等定义自己的定义。
请记住,您可以为不同的组织使用早期绑定类型,只要您不尝试选择或更新不存在的特定字段或实体。因此,如果Org 1在联系人实体上有一个CompanyId,而Org 2没有,那么您仍然可以为Org 1和Org 2使用早期绑定类型,只要您不填充CompanyId (即将其放在实体参数集合中)
https://stackoverflow.com/questions/16482430
复制相似问题