【问题标题】:Retrieve a fields value from a custom entity using C# in MSCRM 4在 MSCRM 4 中使用 C# 从自定义实体中检索字段值
【发布时间】:2013-03-22 15:01:53
【问题描述】:

在我们的 CRM 环境中,我们在自定义参数的设置中有一个自定义实体类型,其中实体包含名称、类型和值。我需要在使用 asp 和 C# 的 Web 应用程序中获取这些“参数”之一来做一些数学运算。如何使用实体的 ID 在我的 aspx.cs 文件中检索该实体的值和类型字段,以便我可以创建一个与自定义参数实体相对应的 c# 变量。

【问题讨论】:

    标签: c# field return-value dynamics-crm-4


    【解决方案1】:

    第一道

    您可以连接到CRM Web Service,这是一个 .asmx 并从那里检索您的实体。只需将其添加为web reference。根据我的经验,将其添加为 服务引用 很麻烦,但添加为 Web 引用却不是(因为“添加服务引用”是针对 WCF 的,而“添加 Web 引用”已经从.asmx 的开头)。

    顺便说一句,如果您习惯于通过编写插件和自定义工作流活动来使用 CRM SDK,您可能会注意到:

    • 在后台,CRM SDK 程序集实际上无论如何都在调用 CRM Web 服务......他们只是以一种漂亮的方式将其包装起来,以促进插件等的开发
    • 添加 Web 服务后,您将拥有大量可供选择的方法,并且您的实体现在是 ASP.NET 应用程序中的类。因为 VS 将导入服务的 WSDL,它会将您的自定义实体识别为一等公民并生成适当的类(即,与您的插件和自定义工作流程序集开发不同,您不需要大量处理 DynamicEntity)李>

    如果您对 CRM 中的实体进行了更改(例如添加字段、创建新实体等),以使您的应用程序保持同步,那么更新/刷新您的 Web 参考也是一个很好的做法。如果您只使用一组有限的实体(在这种情况下听起来像这样)并且它们没有改变,这不是必需的,但仍然是一个很好的做法。

    第二种方式

    您可以直接从 _MSCRM 数据库中获取它。

    如果您想访问原始表,您的实体将有两个表:Base 和 ExtensionBase。您想要的数据(如果它是您针对实体定义的属性)将位于 ExtensionBase 表中。如果您想改用它,还会有一个连接 Base 和 ExtensionBase 表的视图。

    您也可以查询过滤后的视图,但如果您这样做,您需要确保运行 ASP.NET 应用程序的帐户(因此当部署到 IIS 时,这将是应用程序池标识)有权访问 CRM对过滤视图运行针对调用用户的 CRM 安全检查。

    另外,请注意,直接访问数据库表或视图在技术上不受支持。反对过滤视图应该没问题。

    我建议采用第一种方法,但我已经看到过去两种方法都完成了,两者都应该有效。

    【讨论】:

    • 我已连接到 Web 服务,之前的工作是由另一个程序员完成的,但是他通过一些疯狂的 sql 查询直接与数据库交互,而不是处理。我已经更新了 Web 服务,但我只是不熟悉如何使用 Web 引用检索自定义实体的字段。我正在寻找一个示例来检索特定实体(在本例中为服务合同平均费率)的字段值,这是我创建的自定义参数参数实体。
    • 我的老板宁愿我不直接处理数据库,因为它显然被微软视为一种不好的做法。
    • 我知道我可以做crm。然后我开始输入retrieve,智能感知显示了很多方法,这很荒谬。
    • 抱歉延迟响应 - 您可以使用 FetchXML 检索单个字段以获取实体并限制结果中返回的内容。除此之外,您需要通过它的 ID 检索整个实体(如果有的话),然后从返回的 DynamicEntity 中选择您需要的字段
    • 如果你想使用 FetchXML Stunnware 工具,虽然它们现在已经过时了,我认为 Stunnware 不再作为一个完整的业务运营,但可以通过 FetchXML 向导提供帮助,它是免费的一部分社区版:download
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    相关资源
    最近更新 更多