c# - Web 服务中的多个早期绑定(bind)文件

标签 c# wcf dynamics-crm-2011

我有一个包含 3 个不同端点的 WCF 服务,这些端点需要使用不同的 Dynamics CRM 早期绑定(bind)类文件。我将它们放在单独的命名空间中,并删除了:[assembly: Microsoft.Xrm.Sdk.Client.ProxyTypesAssemblyAttribute()] 我似乎无法弄清楚如何指定要使用的早期绑定(bind)文件启用代理类型时。我试图避免将每个早期绑定(bind)文件放在一个单独的项目中。这些文件共享一些相似的实体,但最重要的是,在各个端点的开发组织中不存在一些独特的字段和实体(端点 1 具有端点 2 中不存在的实体)。

最佳答案

您需要至少在一个文件中定义 ProxyTypesAssemblyAttribute。实际上什么文件并不重要,因为它是程序集属性,而不是类属性。您需要确保您没有尝试使用该组织中不存在的 IOrganizationService 调用类型。

更新 1

我对 ProxyTypesAssemblyAttribute 工作方式的理解是错误的。显然,同一程序集中不能有多个类具有相同的 Microsoft.Xrm.Sdk.Client.EntityLogicalNameAttribute(string) 属性(字符串值必须是唯一的)。

您有两种可能的解决方案:

  1. 创建单独的程序集。
  2. 对两者使用相同的命名空间,但不要通过为每个 CRM 组织的每个实体创建一个类来复制类(这就是 https://xrmearlyboundgenerator.codeplex.com/ 变得非常有用的地方)。两者都存在的任何实体,您都必须
    • 手动合并任何差异(当您调用它时,您必须知道对于每个组织什么是有效的,什么是无效的!即如果组织 1 的联系人实体有 ShirtSize 字段而组织 2 没有' t,您不能填充该属性并尝试插入到 Org 2),
    • 使用来自一个组织的文件,并删除另一个。

第二种可能的解决方案可行,但我认为它不可行。

关于c# - Web 服务中的多个早期绑定(bind)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785241/

相关文章:

xml - CRM 2011 高级查找 - 获取 XML - 为修改后的查找导入

c# - 5 .NET HTTP 库 - Microsoft.Net.Http 适合什么地方?

c# - 使用插件将数据从 CRM 数据库传输到 SQL 数据库

c# - 从客户端调用代码隐藏(安全页面)中的方法(JavaScript)

c# - 自定义控制框按钮

c# - 使用反射获取特定键的字典完整路径

c# - 在 C# 中将 nhibernate 连接到 Postgresql

wcf - JAX-WS Java 客户端,WCF 服务互操作性 : "400: Bad Request"

WCF:跨多个服务共享缓存数据

javascript - 从实体主页检索实体属性( GridView )