如何为crm 2011创建一个.net解决方案,使用早期绑定代码连接到两个不同的servicecontexts

lar*_*son 4 .net dynamics-crm-2011

我想创建一个VS 2010 C#控制台应用程序,它连接到两个(或更多)不同的CRM 2011 servicecontexts/tenants.我希望能够使用另一个数据更新数据.

如果我使用crmsvcutil创建两个不同的早期绑定类,我会收到编译器错误:"Duplicate'Microsoft.Xrm.Sdk.Client.ProxyTypesAssemblyAttribute'attribute"

如果我连接这两个文件,它会编译,但后来我得到一个运行时错误:"具有名称帐户的代理类型已被多种类型定义".

如何实现这一目标?

Joh*_*ohn 5

为每组早期绑定类创建一个单独的库项目,并在每个库中放置一个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);
}
Run Code Online (Sandbox Code Playgroud)