ASP.NET MVC搭配Entity Framework访问CRM时new_accountactive字段无效求助
问题根因与解决方案
你遇到的报错可以从以下几个方向排查修复:
- 原生SQL查询字段不全
你在控制器的SqlQuery方法里写的SELECT语句,只查询了id、new_accountserial、new_sun、new_sortcode、new_accountnumber、new_accountname6个字段,但你的OriginatingAccounts实体类还包含new_accountactive等4个额外属性,且视图中也用到了这些属性。EF做实体映射时需要匹配所有属性对应的列,哪怕你只在WHERE条件里用到new_accountactive,也需要先把该字段加到SELECT列表中,修改后的SQL参考:
Dim _list = db.OriginatingAccounts.SqlQuery("SELECT id, new_accountserial, new_sun, new_sortcode, new_accountnumber, new_accountname, new_accountactive, new_creditingaccount, new_debitingaccount, new_validated FROM new_oaccounts WHERE new_accountactive = 1").ToList
- 布尔值写法不兼容CData驱动
CData连接Dynamics CRM的驱动对未加引号的布尔常量true兼容性较差,建议把WHERE条件里的new_accountactive = true替换为new_accountactive = 1或者new_accountactive = 'True',避免驱动识别失败。 - 兜底排查步骤
如果修改后还是报错,可以先通过CData官方提供的连接测试工具直接执行你写的SQL语句:
- 如果测试工具执行也报字段不存在,说明你核对的字段名和CRM中实际的逻辑名称仍有偏差,可重新导出CRM实体的元数据确认字段名
- 如果测试工具执行正常,说明你的
DynamicsCRMContext上下文配置存在映射问题,可检查是否有全局的字段忽略、字段名转换规则冲突。
内容的提问来源于stack exchange,提问作者PeteN
相关产品推荐
相关产品推荐

