【发布时间】:2013-03-22 15:01:53
【问题描述】:
在我们的 CRM 环境中,我们在自定义参数的设置中有一个自定义实体类型,其中实体包含名称、类型和值。我需要在使用 asp 和 C# 的 Web 应用程序中获取这些“参数”之一来做一些数学运算。如何使用实体的 ID 在我的 aspx.cs 文件中检索该实体的值和类型字段,以便我可以创建一个与自定义参数实体相对应的 c# 变量。
【问题讨论】:
标签: c# field return-value dynamics-crm-4
在我们的 CRM 环境中,我们在自定义参数的设置中有一个自定义实体类型,其中实体包含名称、类型和值。我需要在使用 asp 和 C# 的 Web 应用程序中获取这些“参数”之一来做一些数学运算。如何使用实体的 ID 在我的 aspx.cs 文件中检索该实体的值和类型字段,以便我可以创建一个与自定义参数实体相对应的 c# 变量。
【问题讨论】:
标签: c# field return-value dynamics-crm-4
第一道
您可以连接到CRM Web Service,这是一个 .asmx 并从那里检索您的实体。只需将其添加为web reference。根据我的经验,将其添加为 服务引用 很麻烦,但添加为 Web 引用却不是(因为“添加服务引用”是针对 WCF 的,而“添加 Web 引用”已经从.asmx 的开头)。
顺便说一句,如果您习惯于通过编写插件和自定义工作流活动来使用 CRM SDK,您可能会注意到:
如果您对 CRM 中的实体进行了更改(例如添加字段、创建新实体等),以使您的应用程序保持同步,那么更新/刷新您的 Web 参考也是一个很好的做法。如果您只使用一组有限的实体(在这种情况下听起来像这样)并且它们没有改变,这不是必需的,但仍然是一个很好的做法。
第二种方式
您可以直接从 _MSCRM 数据库中获取它。
如果您想访问原始表,您的实体将有两个表:Base 和 ExtensionBase。您想要的数据(如果它是您针对实体定义的属性)将位于 ExtensionBase 表中。如果您想改用它,还会有一个连接 Base 和 ExtensionBase 表的视图。
您也可以查询过滤后的视图,但如果您这样做,您需要确保运行 ASP.NET 应用程序的帐户(因此当部署到 IIS 时,这将是应用程序池标识)有权访问 CRM对过滤视图运行针对调用用户的 CRM 安全检查。
另外,请注意,直接访问数据库表或视图在技术上不受支持。反对过滤视图应该没问题。
我建议采用第一种方法,但我已经看到过去两种方法都完成了,两者都应该有效。
【讨论】: