标签: dynamics-crm-2011

如何使用CRM 2011 webservice和JavaScript在CRM 2011中执行FetchXML?

我想使用CRM 2011 SOAP Web服务JavaScript在CRM 2011环境中执行FetchXML查询.

我发现了很多像这样的文章,展示了如何使用2011环境中仍然可用的4.0 Web服务,但我不想这样做.

此链接似乎表明IOrganizationService.RetrieveMultiple可以处理FetchXML.但是,我不想为此使用托管代码.

我遇到过这个链接,它基本上显示了我想在RetrieveMultiple函数中做什么,但我希望能够传入我编写的现有FetchXML,而不是新的过滤器表达式.

javascript fetchxml dynamics-crm-2011

8
推荐指数
1
解决办法
3万
查看次数

插件不参与CRM 2011的参考

我创建了一个插件并使用了对我创建的另一个项目(DLL)的引用.问题是当我尝试运行插件时,我得到一个CRM错误说:

无法加载文件或程序集"XXX,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = a760feb9ec7271a9"或其中一个依赖项.该系统找不到指定的文件.

有没有人有任何想法解决这个问题?

c# crm dynamics-crm-2011

8
推荐指数
2
解决办法
8252
查看次数

如何在N:N关系中触发MS Dynamic CRM中的插件?

我想在N:N(多对多)关系中触发MS Dynamic CRM插件?

当用户在N:N关系中添加或删除行时,则暴露我的插件.

这是可能的,如果是这样的话?

.net c# dynamic dynamics-crm dynamics-crm-2011

8
推荐指数
1
解决办法
3779
查看次数

如何为CRM 2011插件正确设置C#单元测试?

尝试在CRM 2011中调试插件非常困难.将.pdb文件放在服务器上的正确位置不仅存在问题,而且每次进行编码更改时,都会遇到部署和重新注册插件的麻烦.由于触发器是在CRM本身,因此很难为它创建单元测试.

我目前为一个全新的插件编写单元测试的过程相当缓慢而且错误,但是这样的事情:

  1. 使用SDK插件注册工具注册新插件
  2. 将调试器附加到w3wp.exe,在插件代码中添加一个断点.
  3. 通过注册运行的任何操作触发插件.
  4. 当断点被击中时,将管道的preimage,postimage和目标值序列化为XML文件,然后这将成为我的单元测试的输入.
  5. 停止调试并创建一个新的单元测试,使用RhinoMocks模拟PluginExecutionContext和ServiceProvider,使用序列化的XML文件作为输入参数的存根.
  6. 创建在每个单元测试的开始和结束时运行的方法,这些方法重置(首先尝试删除,然后添加)要处理的单元测试的虚拟数据,然后在测试结束时删除虚拟数据.
  7. 编辑序列化文件以引用虚拟数据,这样我就可以确保插件在每次运行时都能对抗完全相同的数据.
  8. 在单元测试中声明并实例化插件,传入模拟对象
  9. 执行插件,运行其他查询以确保插件执行我期望的工作,断言失败.

这是一件痛苦的事.从得到的图片正确,创造虚拟的数据,并且每个测试运行时将其复位,似乎有需要改进的很多地区.

如何在不必从CRM实际触发插件的情况下对插件进行单元测试,或者首先运行在CRM中调试它的所有箍,并为每个测试创建独特的虚拟数据?如何使用注入来消除在CRM中为每个单元测试删除,创建,测试,验证和删除数据的需要?

2016年更新

这个问题仍然有很多点击,所以我想我会添加两个(我所知道的)开源项目,为单元测试提供Fake CRM实例:

  • FakeXrmEasy - 由Jordi创建(见下面的答案)
    • 主要是伪造的CRM服务
    • 支持插件/工作流程伪造
    • 对FakeItEasy的依赖
    • 伟大的文档
  • XrmUnitTest - 由我自己创建
    • 假CRM服务+更多(假设,实体建设者等)
    • 流畅支持插件/工作流程伪造
    • 没有对任何模拟框架的依赖
    • Sucky文档(我正在研究它)

查看我创建的视频,比较和对比差异.

c# unit-testing dynamics-crm-2011

8
推荐指数
1
解决办法
3478
查看次数

CRM 2011插件注册工具的过滤属性有何作用?

我假设对于Update插件,它指定了一个属性列表,如果被更改,则导致插件触发.

因此,如果我每次更新实体时Foo只针对一个过滤属性注册一个插件,CRM会执行检查以查看是否已更新,如果有,则运行我的插件.因此,使用下面的代码,我希望我的插件执行一次.BarFooBar

Foo foo = new Foo();
foo.Bar = 0;
foo.Id = service.Create(foo);
foo.Bar = 1;
service.Update(foo.Bar); // My plugin would execute
service.Update(foo.Bar); // Bar hasn't changed, I would assume the plugin will not  execute
Run Code Online (Sandbox Code Playgroud)

我在这个假设中是对的吗?

dynamics-crm-2011

8
推荐指数
1
解决办法
5458
查看次数

高级查找 - 将相关权利与OR相结合

有没有办法创建该查询?

在此输入图像描述

我需要来自Adress和Contact Adress的数据,通常我可以将它们组合在一起Combine OR但不是在这种情况下.

我想我必须用PreExecute()方法编写新的插件,获取我的查询,解析数据然后手动获得相同的地址或者还有其他方法吗?

dynamics-crm dynamics-crm-2011

8
推荐指数
1
解决办法
1782
查看次数

将下拉菜单添加到CRM 2011功能区

我是crm 2011的新手.我找到了有关如何在功能区中添加新按钮的文档.以及如何分组按钮.但我需要功能区中的下拉菜单按钮.我怎样才能做到这一点?我没有找到任何关于此的信息.

谢谢!

xml crm dynamics-crm dynamics-crm-2011

7
推荐指数
1
解决办法
6981
查看次数

CRM2011 - SDK 5.0.3 - Linq to CRM Entities Problem

我正在使用crmsvcutil生成早期绑定类型.在crm 4.0天中,只需点击entity.ChildEntities属性即可加载相关的entites.

  //Winvs.Next.Entities.CrmDataContext dc = new Entities.CrmDataContext(new Microsoft.Xrm.Sdk.Client.OrganizationServiceContext(
  var cred = new System.ServiceModel.Description.ClientCredentials();
  cred.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
  //      
  using (var organizationServiceProxy = new Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy(new Uri(System.Configuration.ConfigurationManager.ConnectionStrings["CrmConnection"].ConnectionString), null, cred, null))
  using (Winvs.Next.Entities.CrmDataContext dc = new Entities.CrmDataContext(organizationServiceProxy))
  {
    // This statement is required to enable early-bound type support.
    organizationServiceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new Microsoft.Xrm.Sdk.Client.ProxyTypesBehavior());
    //
    foreach (var a in dc.AccountSet)
    {
      foreach (var c in a.contact_customer_accounts)
      {
        c.FullName.ToString();
      }
    }       
  }
Run Code Online (Sandbox Code Playgroud)

当我使用最新的CRM 2011 SDK版本执行此操作而不是加载已实现的实体时,我得到一个NullReferenceException,它没有提供有关该问题的进一步信息.

foreach (var c in a.contact_customer_accounts)
Run Code Online (Sandbox Code Playgroud)

我想念什么?如何使用CRM2011 Linq加载相关实体?

linq dynamics-crm-2011

7
推荐指数
2
解决办法
7281
查看次数

有没有办法重新排序Microsoft Dynamics CRM 2011工作流程中的步骤?

我正在Microsoft Dynamics CRM 2011中创建一个工作流程.我有一个步骤,然后有几个条件.我意外地将应该在第三个条件下的步骤放在与主步骤相同的级别.有没有办法将步骤移动到主要步骤条件而不删除并重新创建步骤?

dynamics-crm dynamics-crm-2011

7
推荐指数
1
解决办法
3772
查看次数

从Dynamics CRM 2011插件调用System.Diagnostics.Trace

想知道你是否有任何关于我遇到的以下问题的想法.

这是一些超级简单的插件代码.

namespace Demo.DebugTraceBlog
{
    public class TraceAndDebugDemo : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            Trace.WriteLine("Started Plugin");    
            Trace.WriteLine("Plugin Working");    
            Trace.WriteLine("Ending Plugin");                
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用DebugView(http://goo.gl/YRfus)来查看正在写入的跟踪消息.当我执行这个代码作为一个插件在沙箱中运行,我得到我预期的结果:三线出现在DebugView中,如果我附上VS沙盒工作进程我看到写入到输出窗口三行.现在,当我改变隔离模式无法比拟的,并且让它在W3WP.EXE过程来看,我没有得到任何输出到DebugView中,当我连接到我的w3wp.exe可以设置断点以验证它正在运行,但我不知道获取任何输出到输出窗口.

知道为什么会发生这种情况以及如何重写原因并强制非沙盒执行按预期工作的任何想法.我可以猜测它与运行CRM IIS进程内部有关,而CRM正在抑制Trace写入 - 我专门使用Trace而不是Debug来试图避免这个问题,但没有运气.

我知道我可以使用ITracingService,但这不符合我当前的要求.

c# asp.net iis-7 system.diagnostics dynamics-crm-2011

7
推荐指数
1
解决办法
1231
查看次数