首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CRM开发-支持多个组织的早期绑定方法

CRM开发-支持多个组织的早期绑定方法
EN

Stack Overflow用户
提问于 2013-05-10 12:37:21
回答 1查看 330关注 0票数 0

当我们希望在C#中开发一个客户关系管理库(经理)时,我们将面临这样的问题:它将支持与多个客户关系管理系统的通信--即当您同时运行多个客户关系管理实例(例如两个不同的组织)的情况。

客户关系管理图书馆所需经费:

  1. 使用早期绑定而不是后期绑定(因为类型安全)
  2. 能够通过一个经理与更多的客户关系管理系统(组织)沟通。
  3. 只有一种用于所有CRM系统(组织)的操作(避免代码重复)的方法--需要为每个组织创建一个实用工具来解析生成的实体文件(crmsvcutil工具)。解析的结果将是实体文件中定义的实体的接口和部分类列表。接口将根据它们所包含的属性(如IAccountNumber等)在部分类中实现。接口将分为两组接口--第一组用于两个组织中常见的实体属性,例如接口ICrmAccount将定义AccountNumber、Name、Address1属性等。第二组接口将用于对实体唯一且不存在于所有客户关系管理系统(组织)实体的属性。首席客户关系管理人员将提供所有通信方法,如CreateAccount()、GetAccount()等,然后这些方法将根据实现的接口与特定的客户关系管理系统一起工作。

我们已经设计了一个解决方案,它现在能够与两个不同的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‘条件。实体成员正在调用无效的属性或方法--请参见方法实现。”

如果有人能找到解决这个例外的办法,我们将不胜感激。

谢谢

铺设

EN

回答 1

Stack Overflow用户

发布于 2013-05-13 12:31:24

对于我现在的雇主来说,他们有多个CRM组织,有些几乎是相同的,我们实际上能够使用完全相同的早期绑定类,使用20行定制代码来处理这些差异。其他组织则不然,因此我们有一个单独的dll,其中包含一个特定于组织的名称空间,该名称空间包含生成的早期绑定类型。它们不可能都位于同一个dll中是没有理由的,但是如果它们都位于同一个命名空间中,则会有问题,因为每个名称空间都会为联系人、约会等定义自己的定义。

请记住,您可以为不同的组织使用早期绑定类型,只要您不尝试选择或更新不存在的特定字段或实体。因此,如果Org 1在联系人实体上有一个CompanyId,而Org 2没有,那么您仍然可以为Org 1和Org 2使用早期绑定类型,只要您不填充CompanyId (即将其放在实体参数集合中)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16482430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档