我有一个包含 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)
属性(字符串值必须是唯一的)。
您有两种可能的解决方案:
- 创建单独的程序集。
- 对两者使用相同的命名空间,但不要通过为每个 CRM 组织的每个实体创建一个类来复制类(这就是 https://xrmearlyboundgenerator.codeplex.com/ 变得非常有用的地方)。两者都存在的任何实体,您都必须
- 手动合并任何差异(当您调用它时,您必须知道对于每个组织什么是有效的,什么是无效的!即如果组织 1 的联系人实体有 ShirtSize 字段而组织 2 没有' t,您不能填充该属性并尝试插入到 Org 2),
- 使用来自一个组织的文件,并删除另一个。
第二种可能的解决方案可行,但我认为它不可行。
关于c# - Web 服务中的多个早期绑定(bind)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785241/