gpt4 book ai didi

.net - 如何为 crm 2011 创建一个使用早期绑定(bind)代码连接到两个不同服务上下文的 .net 解决方案

转载 作者:行者123 更新时间:2023-12-05 01:28:15 27 4
gpt4 key购买 nike

我想创建一个 VS 2010 C# 控制台应用程序,它连接到两个(或更多)不同的 CRM 2011 服务上下文/租户。我希望能够用另一个数据更新数据。

如果我使用 crmsvcutil 创建两个不同的早期绑定(bind)类,则会出现编译器错误:“重复 'Microsoft.Xrm.Sdk.Client.ProxyTypesAssemblyAttribute' 属性”

如果我连接这两个文件,它会编译,但会出现运行时错误:“具有名称帐户的代理类型已由多种类型定义”。

如何实现?

最佳答案

为每组早期绑定(bind)的类创建一个单独的库项目,并在每个库中放置一个 crmsvcutil 文件(根据需要添加程序集引用)。现在,在控制台应用程序上,添加对库的引用。

假设我创建了两个编译为 Proxy1.dll 和 Proxy2.dll 的库项目。每个库的根命名空间是 Proxy1 和 Proxy2。在 ConsoleApp.exe 中,我添加了两个引用和以下内容:

var url1 = new Uri(".../XRMServices/2011/Organization.svc");
var proxy1 = new OrganizationServiceProxy(url1, null, null, null);
proxy1.EnableProxyTypes(Assembly.Load("Proxy1")); // Proxy1.dll

var url2 = new Uri(".../XRMServices/2011/Organization.svc");
var proxy2 = new OrganizationServiceProxy(url2, null, null, null);
proxy2.EnableProxyTypes(Assembly.Load("Proxy2")); // Proxy2.dll

using (var context1 = new Proxy1.Proxy1ServiceContext(proxy1))
using (var context2 = new Proxy2.Proxy2ServiceContext(proxy2))
{
var accounts1 = context1.AccountSet;
var accounts2 = context2.AccountSet;

foreach (var account in accounts1) Console.WriteLine("1: {0}: {1}", account.GetType(), account.Id);
foreach (var account in accounts2) Console.WriteLine("2: {0}: {1}", account.GetType(), account.Id);
}

关于.net - 如何为 crm 2011 创建一个使用早期绑定(bind)代码连接到两个不同服务上下文的 .net 解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10548683/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com