插件中获取Entity不同类型字段时稍有区别,一般用如下两种方式:

Entity targetEntity = (Entity)context.InputParameters["Target"];
1.decamil val = Convert.ToDecimal(targetEntity["new_cmremainingamount"]);
2.decamil val = targetEntity.GetAttributeValue<decimal>("new_cmremainingamount");

即通过强转或者GetAttributeValue方式,第一种方式不建议使用,赋值时用这种方式会比较简洁一些,但在获取值时,直接拿,如果值为空则会抛出空指针异常,用第二种方式,如果值为空则返回null,不为空就正常返回值。

附上CRM中字段类型:

货币:new Money(Decimal)
查找:new EntityReference(objecttypename,Guid)
下拉:new OptionSet(Int)
选项集:false/true
时间:DateTime
整数:Integer
十进制数:Decimal
浮点数:Double
单行/多行文本:String
但在实际插件代码中,去判断Moeny类型时,做一些直接的计算想一行代码设置值,就最好还是先判断一下entity中有没有这个字段,Entity实体通过查询返回或者插件的当前操作实体都是只返回有值的字段,没有值的字段不会再Entity中,所以使用以下方式:
if (!targetEntity.Contains("new_cmremainingamount")&& !targetEntity.Contains("new_partsremainingamount"))
{
return;
}
当然上面这种很常见,结合到一行代码中如下:
decimal singleVolume = 0;
decimal singleWeight = 0;
singleVolume = !detailEntity.Contains("new_singlevolume") ? 0 : detailEntity.GetAttributeValue<decimal>("new_singlevolume");
singleWeight = !detailEntity.Contains("new_singleweight") ? 0 : detailEntity.GetAttributeValue<decimal>("new_singleweight");
decimal amountBalance = 0;
foreach (Entity en in entityCollection.Entities)
{
amountBalance += !en.Contains("new_cmremainingamount") ? 0 : en.GetAttributeValue<Money>("new_cmremainingamount").Value;
}
或者也可以通过?.的方式
amountBalance += en.GetAttributeValue<Money>("new_cmremainingamount")?.Value ?? 0;

Dynamic CRM插件中获取Entity属性值问题的更多相关文章

  1. Dynamic CRM插件中记录日志-Nlog记录到文本

    Dynamic CRM插件中记录日志的方式有多种 通常情况下分为ITracingService记录.单独日志表插入记录.文本记录三种. 之前整理过ITracingService记录的方式,但这种记录有 ...

  2. ASP.NET Core EF 查询获取导航属性值,使用Include封装

    // 引用 using Microsoft.EntityFrameworkCore; // 摘要: // Specifies related entities to include in the qu ...

  3. JS中使用document.defaultView.getComputedStyle()、currentStyle()方法获取CSS属性值

    在对网页进行调试的过程中,经常会用到js来获取元素的CSS样式,方法有很多很多,现在仅把我经常用的方法总结如: 1. obj.style:这个方法只能JS只能获取写在html标签中的写在style属性 ...

  4. java中获取系统属性以及环境变量

    java中获取系统属性以及环境变量 System.getEnv()和System.getProperties()的差别 从概念上讲,系统属性 和环境变量 都是名称与值之间的映射.两种机制都能用来将用户 ...

  5. JS中获取元素属性的逆天大法

    给大家聊下js中获取元素属性的逆天大法,胆小慎入,切记切记!!! innerHTML.outerHTML.innerText .outerText.value.text().html(),val() ...

  6. thymeleaf 模板使用 之 前台界面获取后台属性值

    使用Thymeleaf模板时,如果需要在js中获取后台传值,那么需要用内联JS写法获取 [姿势很重要] 一.后台通过Model的addAttribute方法向前台传值 1.js获取后台属性值(--内联 ...

  7. js中获取css属性

    直接获取 window.onload = function() { var but = document.getElementById('button'); var div = document.ge ...

  8. GridView控件RowDataBound事件中获取列字段值的几种途径

    前台: <asp:TemplateField HeaderText="充值总额|账号余额"> <ItemTemplate> <asp:Label ID ...

  9. c# 如何通过反射 获取\设置属性值

    c# 如何通过反射 获取\设置属性值 //定义类public class MyClass{public int Property1 { get; set; }}static void Main(){M ...

  10. js对象中动态读取属性值 动态属性值 js正则表达式全局替换

    $(document).ready(function(){ var exceptionMsg = '${exception.message }'; var exceptionstr = ''; //j ...

随机推荐

  1. window平台快速部署syslog服务器

    最近内部测试需要部署一套syslog服务器,网上找了下,无论是linux还是windows,部署均非常麻烦,现在和大家分享一个基于windows平台快速部署syslog服务器的方法 这里用到的工具就是 ...

  2. 重温c语言之,7天开整,就是随便的写写,第二天

    一:操作符 除法: 如果都是整数,除数,被除数都是整数,那么结果:就是整数的商(没有小数部分的),例如:7/2=3: 如果除数或者被除数其中一个是浮点数,那么结果就是(条件是:能除尽的,并且小数在基础 ...

  3. 🎉TinyVue v3.19.0 正式发布!Tree 组件终于支持虚拟滚动啦!UI 也升级啦,更更符合现代审美~

    你好,我是 Kagol,个人公众号:前端开源星球. 我们非常高兴地宣布,2024年10月28日,TinyVue 发布了 v3.19.0 . 本次 3.19.0 版本主要有以下重大变更: 所有组件全面升 ...

  4. 算法笔记——马拉核弹(Mana Nuclear)

    0x00 摘要 "马拉核弹"算法由 SXHT 同学(2009~今)发明,并在 2024 年 11 月于某不知名学校机房内正式公布.该算法基于 1975 年发明的 Manacher ...

  5. 超级干货:Air780E之RS485通信篇,你学会了吗?

    ​ 今天,我们来学习低功耗4G模组Air780E的RS485通信,同学们,你学习了吗? 一.RS485简介  物联网(IoT)在工业场景中的应用越来越广泛,而RS485是一种常见的通信协议,广泛应用于 ...

  6. 设计模式之中介者模式(Mediator)

    一.初识中介者模式 那些年,我们一起上过的大学,班级里有班长,有团书记.想一想如果没有QQ这种通讯工具的话,那么班长或者团支书该怎样下达消息呢??同时,班级上两个同学之间也可惜沟通啊,沟通一下,院里哪 ...

  7. 通过双 key 来解决缓存并发问题

    我们在使用缓存的时候,不管Redis或者是Memcached,基本上都会遇到以下3个问题:缓存穿透.缓存并发.缓存集中失效.这篇文章主要针对[缓存并发]问题展开讨论,并给出具体的解决方案. 1.什么是 ...

  8. MySql 9 in Docker 利用克隆插件搭建主从

    环境说明 Docker Windows 11 MySql 9.1.0 搭建步骤 1. 准备主库 准备一个主库的配置文件 master.cnf [mysqld] server-id=1 log-bin= ...

  9. VTK 正交投影 透视投影

    VTK默认透视投影(近大远小),如果想改成正交投影(平行投影,远近一样): 1.调用vtkCamera的ParallelProjectionOn函数开启 2.通过vtkCamera的SetParall ...

  10. Android 12 适配之 "Android:exported"

    Android 12 适配之 "Android:exported" 将 build.gradle 中的 targetSDKVersion 和 compileSdkVersion 改 ...