标签: dynamics-crm-2011

CRM检索实体 - 错误:无法将"Microsoft.Xrm.Sdk.Entity"类型的对象强制转换为"CRMEntities.List"

我从CRM生成实体,如下所示:

CrmSvcUtil.exe /url:http://<servername>/<organizationname>/XRMServices/2011/Organization.svc
    /out:<outputfilename>.cs /username:<username> /password:<password> /domain:<domainname>
    /namespace:CRMEntities /serviceContextName:XrmServiceContext
Run Code Online (Sandbox Code Playgroud)

对于serviceContextName,我设置了XrmServiceContext.我想使用下一个代码从CRM中检索一些实体:

var context = new XrmServiceContext(myorgserv);
var marketingList = context.ListSet.Where(item => item.Id == new Guid("SOME GUID"));
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Message "Unable to cast object of type 'Microsoft.Xrm.Sdk.Entity' to type 'CRMEntities.List'."
Run Code Online (Sandbox Code Playgroud)

在"添加到监视"之后,我看到上下文中的每组实体都有相同的消息.我错过了什么?

c# early-binding dynamics-crm-2011

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

如何在CRM Dynamics中使用别名属性时从fetchedXML访问值?

我正在提取营销列表清单.正如我这样做,根据我使用intellisense的检查,这似乎是一次成功的操作.当我寻找时,...Entities[0].Attributes["nick"]我得到一个对象(在其中的某个地方有正确的数据).但是我不能以编程方式访问它(相反,我必须像猴子一样点击,通过优点来折叠好东西).

事实上,我得到的实体应该使用下面的代码.问题是它们不Strings符合计算机.它们属于类型Microsoft.Xrm.Sdk.AliasedValue,我不知道如何访问其中的实际缺口.

new Contact
{
  Name = element.Attributes["nick"] as String,
  Mail = element.Attributes["mail"] as String
}
Run Code Online (Sandbox Code Playgroud)

Intellisense说Value它就在那里(而且它也是正确的值)但是我无法通过输入来访问它.Value.我怀疑我需要使用"as"或类似的东西,但此刻我被卡住了.任何提示?AsString应该起作用,它给了我null......

我已经读过这篇文章以及其他几个喜欢它和我看到它的方式,我应该能够访问那里所有有趣的东西.我不能......

我注意到下面的代码得到我的数据,我这么拼命试图让,但这个不能成为一个专业的语法,可以吗?!说真的,它看起来像一个患有多动症和宿醉的高中生试图这样做......

new Contact
{
  Name = ((Microsoft.Xrm.Sdk.AliasedValue)result.Entities[0].Attributes["nick"]).Value,
  Mail = ((Microsoft.Xrm.Sdk.AliasedValue)result.Entities[0].Attributes["mail"]).Value
}
Run Code Online (Sandbox Code Playgroud)

我的意思是,认真 - 这是一段丑陋的代码......必须有一个更好的方法!但是,我担心没有,因为这个讨论似乎也在使用这种语法......

c# dynamics-crm dynamics-crm-2011

6
推荐指数
1
解决办法
7889
查看次数

代表Dynamics CRM 2011中的大量数字

我试图在Dynamics CRM 2011中表示大于100,000,000,000(Decimal数据类型的最大值)的数字.看起来这样做的唯一方法是使用Currency字段或使用文本字段.这些选项都不是很吸引人.

在Dynamics CRM中表示大数字的最佳方法是什么?

dynamics-crm dynamics-crm-2011

6
推荐指数
1
解决办法
1089
查看次数

奇怪的行为CRM 2011插件

我已经为我们的报价产品注册了一个插件.该插件在我们的测试环境中运行良好.我已经测试了很多次.然后在主服务器中注册该插件.但是,会出现以下情况:当我首先创建或更新报价产品时,报价产品表格会变灰:

在此输入图像描述

点击报价表后,出现错误.没有可用的日志文件(如您所见).我调试了插件,但也没有错误.单击"确定"后,错误消失,所需业务发生在报价产品上(对于税收字段).意味着插件代码没有错误并且工作得很好.代码如下:

using System;
using System.Diagnostics;
using System.Linq;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;
using Xrm;
using System.Collections.Generic;
using Microsoft.Xrm.Sdk.Deployment;

public class Plugin : IPlugin
{
    public void Execute(IServiceProvider serviceProvider)
    {
        IPluginExecutionContext context = (IPluginExecutionContext)
        serviceProvider.GetService(typeof(IPluginExecutionContext));
        Entity entity;
        if (context.InputParameters.Contains("Target") &&
        context.InputParameters["Target"] is Entity)
        {
            entity = (Entity)context.InputParameters["Target"];
            if (entity.LogicalName != "quotedetail") { return; }
        }
        else
        {
            return;
        }
        try
        {
            IOrganizationServiceFactory serviceFactory =
                (IOrganizationServiceFactory)serviceProvider.GetService(
            typeof(IOrganizationServiceFactory));
            IOrganizationService service =
            serviceFactory.CreateOrganizationService(context.UserId);
            if (context.MessageName == "Create")
            {
                Entity QuoteProduct = (Entity)context.InputParameters["Target"];
                Guid QPID …
Run Code Online (Sandbox Code Playgroud)

c# plugins dynamics-crm-2011

6
推荐指数
1
解决办法
3681
查看次数

CRM 2011更新插件:哪些字段已更改?

如何在同步插件中确定哪些字段发生了变化?
插件在更新时注册.
类似于JavaScript中的isDirty():

// TODO: Implement your custom Plug-in business logic.
IOrganizationService service = localContext.OrganizationService;
Entity account = (Entity)localContext.PluginExecutionContext.InputParameters["Target"];
if (account.GetAttributeValue<String>("address1_latitude").isDirty())
{
    service.Create(new Lead { FirstName = "LOCATION CHANGED" }); // this is a stub
} 
Run Code Online (Sandbox Code Playgroud)

dynamics-crm-2011

6
推荐指数
2
解决办法
8505
查看次数

删除CRM Dynamics 2011中的用户

我完全清楚Microsoft不支持删除CRM Dynamics 2011中的用户(SystemUser Entity).

但是,我们目前正在开发一种工具来支持我们的用户配置需求.为了能够为此工具编写集成测试,之后似乎必须能够删除用户,以便我们可以将测试环境回滚到原始状态.
目前,我们通过从SQL备份恢复组织来实现这一点,但这对于每次测试运行来说都是非常耗时的.

更新

到目前为止,我们拥有的最佳解决方案是在集成测试中创建用户,断言我们需要断言的所有内容,然后通过禁用用户并删除其AD凭据来"清理它",以便我们可以重用这些下次运行测试的凭据.

但是,由于我们只是在寻找测试环境的解决方案,我真的希望有一个能够正确清理所有内容的解决方案:删除SQL中的记录似乎是要走的路.但是,由于数据库结构复杂,我希望有人可以为此提供脚本.

UPDATE2

我们已经创建了脚本以手动从SQL中删除用户(请参阅已接受的答案).这不受支持,因此只有在测试环境中使用它,如果您知道自己在做什么.

c# microsoft-dynamics integration-testing dynamics-crm dynamics-crm-2011

6
推荐指数
1
解决办法
8770
查看次数

用于登录Dynamics CRM插件的生产的策略

CRM 2011在前提下.

我有一个用C#编写的插件.它可能会抛出异常或在生产中表现不佳.

当发生这种情况时,我想捕获有关状态和最近代码执行的信息,以帮助我分析问题.

理想情况下,我想要以下内容:

  1. 如果代码决定我应该知道一个问题,那么我希望它能够告诉我尽快出现问题,而我没有看到问题是否已经发生.

  2. 我希望能够轻松获取有关该问题的信息.我不想让RDP到另一台机器并搜索文件.

  3. 我不希望日志记录对性能产生太大影响.

我想我正在寻找这样的东西:

  • 在内存中保留最后n行日志.
  • 单个函数调用以向日志添加一行.
  • 单个函数调用导致记录错误.
  • 如果出现错误,请发邮件给我说有问题.这包含摘要信息.
  • 该电子邮件包含指向网页的链接,向我显示完整的错误详细信息.堆栈跟踪,错误消息,日期,时间,用户等,最后n行日志.
  • 如果还有一个网页显示我所有错误,过滤,排序等等,那就太好了.

我对CRM很新,但我以前开发过这样的系统.由于CRM已经存在多年,我希望它可以用于它.

dynamics-crm dynamics-crm-2011

6
推荐指数
1
解决办法
3653
查看次数

从插件中调用ExecuteMultipleRequest是否有益?

我知道从CRM外部执行批量更新时,ExecuteMultipleRequest是一个巨大的性能助推器.我不知道的是从CRM插件中调用它是否有益.

我目前的理解是,使用ExecuteMultipleRequest获得的主要性能是实际的SOAP消息传递成本.因此(用于更新5000条记录)而不是发送5000条单独的Soap消息(每条消息必须被序列化,验证,传输等),所有这些都必须发送到服务器,您只能发送一条包含5000条记录的消息.但是当从插件调用时,您已经在服务器上,因此不必进行SOAP调用,因此使用它没有任何好处.

我还没有看到其他一些潜在的好处吗?

dynamics-crm-2011 dynamics-crm-2013 dynamics-crm-2015

6
推荐指数
1
解决办法
1658
查看次数

在哪个表中存储MS CRM系统视图?

我正在寻找包含MS Dynamics CRM系统视图或保存的高级查找视图的条件记录的表.每个保存的视图(系统视图或自定义视图)都有一些用于过滤结果的条件.我想在数据库中找到包含此条件的表作为记录.

sql-server dynamics-crm-2011

6
推荐指数
1
解决办法
8861
查看次数

如何将过滤器选项从ODataQueryOptions映射到RestRequest

我需要能够从ODataQueryOptions转换为RestRequest,以便能够使用指定的过滤器发出RestRequest,并创建了以下帮助程序类:

public static class ODataQueryFilterToRestClient
{
    public static RestRequest Map(ODataQueryOptions odataQuery)
    {
        var restRequest = new RestRequest();

        if (odataQuery.Filter != null)
        {
            restRequest.AddQueryParameter(@"$filter", odataQuery.Filter.RawValue);
        }

        if (odataQuery.Top != null)
        {
            restRequest.AddQueryParameter(@"$top", odataQuery.Top.RawValue);
        }

        if (odataQuery.Skip != null)
        {
            restRequest.AddQueryParameter(@"$skip", odataQuery.Skip.RawValue);
        }

        if (odataQuery.OrderBy != null)
        {
            restRequest.AddQueryParameter(@"$orderby", odataQuery.OrderBy.RawValue);
        }
        //etc
        return restRequest;
    }
}
Run Code Online (Sandbox Code Playgroud)

鉴于OdataQueryOptions支持以下内容:

在此输入图像描述

有没有更简单的方法在ODataQueryOptions与RestClient或其他其他客户端代理之间进行转换?

另外,我不知道是否有更好的方法通过控制器接受参数而不是ODataQueryOptions?

c# dynamics-crm odata dynamics-crm-2011 dynamics-crm-2016

6
推荐指数
1
解决办法
845
查看次数