Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MSCRM 4中使用C#从自定义实体检索字段值_C#_Field_Return Value_Dynamics Crm 4 - Fatal编程技术网

在MSCRM 4中使用C#从自定义实体检索字段值

在MSCRM 4中使用C#从自定义实体检索字段值,c#,field,return-value,dynamics-crm-4,C#,Field,Return Value,Dynamics Crm 4,在我们的CRM环境中,在自定义参数的设置中有一个自定义实体类型,其中实体包含名称、类型和值。我需要在使用asp和C#的web应用程序中获取这些“参数”中的一个来做一些计算。如何在aspx.cs文件中使用该实体的ID检索该实体的值和类型字段,以便生成与自定义参数实体相对应的c变量。第一种方式 您可以连接到,这是一个.asmx,并从中检索您的实体。只需将其添加为一个。根据我的经验,将其添加为服务引用很麻烦,但添加为web引用却不是(因为“添加服务引用”是针对WCF的,而“添加web引用”从.asmx

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

第一种方式

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

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

  • 在幕后,crmsdk程序集实际上正在调用crmweb服务……它们只是用一种很好的方式来包装它,以方便插件的开发等等
  • 添加web服务后,您将有一大堆方法可供选择,并且您的实体现在是ASP.NET应用程序中的类。因为VS将导入服务的WSDL,它将把您的自定义实体识别为一等公民,并生成相应的类(即,您不需要处理太多的动态性,这与插件和自定义工作流程序集开发不同)
如果您对CRM中的实体进行更改(例如添加字段、创建新实体等),以使您的应用程序同步,则更新/刷新您的web引用也是一种很好的做法。如果您只处理一组有限的实体(在本例中听起来是这样),而它们没有改变,那么这并不是必要的,但仍然是一种良好的做法

第二种方式

您可以直接从您的MSCRM数据库中获取它

如果您想转到原始表,您的实体将有两个表:Base和ExtensionBase。如果所需的数据是针对实体定义的属性,则它将位于ExtensionBase表中。如果您想改用Base和ExtensionBase表,还将有一个连接该表的视图

您也可以查询筛选视图,但如果执行此操作,则需要确保ASP.NET应用程序运行时所使用的帐户(因此,当部署到IIS时,这将是应用程序池标识)有权访问CRM,因为筛选视图会对呼叫用户运行CRM安全检查

另外,请注意,直接转到数据库表或视图在技术上是不受支持的。与过滤视图相反应该是可以的


我建议采用第一种方法,但我在过去看到过两种方法,它们都可以使用。

我连接到web服务,以前的工作是由另一个程序员完成的,但是他通过一些疯狂的sql查询直接与数据库交互,而不是处理id。我已经更新了web服务,但我只是不熟悉如何使用web引用检索自定义实体的字段。我想找一个例子来检索特定实体的字段值(在本例中为服务合同平均费率),这是我创建的自定义参数实体。我的老板不希望我直接处理数据库,因为微软显然不赞成这是一种不好的做法。我知道我可以做crm。然后我开始键入retrieve,intellisense显示了这么多方法,这太荒谬了。很抱歉,响应延迟了-您可以使用获取实体的方法检索单个字段,并限制结果中返回的内容。除此之外,您还需要根据实体的ID检索整个实体(如果您有),然后从返回的DynamicEntity中选择所需的字段。如果您想使用FetchXML,尽管这些工具现在已经很旧了,而且我认为Stunware不再作为一个完整的业务运营,但通过FetchXML向导可能会有所帮助,这是免费社区版的一部分: