c# - 'where 子句'中的未知列'extent3.id'
问题描述
我收到以下错误
unknown column 'extent3.id' in 'where clause'
当我将以下行添加到automapper.cs
配置文件中时。
.ForMember(d => d.hq_state, m => m.MapFrom(o => o.firm_address.Where(c
=> (c.record_status != DeleteStatus && c.is_hq==true)).FirstOrDefault().ab_state_name))
x.CreateMap<firm, SupplierAutoCompleteDTO>()
.ForMember(d => d.display_name, m => m.MapFrom(o => o.name))
.ForMember(d => d.firm_contacts, m => m.MapFrom(o => o.firm_contacts.Where(c => c.record_status != DeleteStatus)))
.ForMember(d => d.hq_state, m => m.MapFrom(o => o.firm_address.Where(c => (c.record_status != DeleteStatus && c.is_hq==true)).FirstOrDefault().ab_state_name))
.ForMember(d => d.supplier_status, m => m.MapFrom(o => o.mst_firm_status.name));
解决方案
这通常发生在 MySQL 考虑column value as a column name
. 让我用一个例子来解释:
创建一个简单的表:
mysql> CREATE TABLE T1 (id int, name varchar(200), city varchar(200));
Query OK, 0 rows affected (0.24 sec)
插入一些记录:
mysql> INSERT INTO T1 values (1, 'rathish', 'ooty');
Query OK, 1 row affected (0.04 sec)
mysql> INSERT INTO T1 values (2, 'kumar', 'the nilgiris');
Query OK, 1 row affected (0.05 sec)
现在让我们尝试更新一条记录:
mysql> UPDATE T1 SET name = 'rathish kumar' WHERE name = `rathish`;
ERROR 1054 (42S22): Unknown column 'rathish' in 'where clause'
当我在列值周围使用(`)时会发生这种情况。backtick
让我们尝试使用单引号或双引号:
mysql> UPDATE T1 SET name = 'rathish kumar b' WHERE name = 'rathish';
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
有用!!!让我们再检查一个场景:
mysql> UPDATE T1 SET name = 'rathish kumar b' WHERE name = kumar;
ERROR 1054 (42S22): Unknown column 'kumar' in 'where clause'
这里没有引号,同样的错误。让我们再检查一个场景:
mysql> UPDATE T1 SET name = 'rathish kumar b' WHERE id = kumar;
ERROR 1054 (42S22): Unknown column 'kumar' in 'where clause'
MySQL 再次认为,它是一个列名。所以我的猜测是,extent3.id
列被包围backticks
或试图分配value with a data type which is not id data type and without quotes
。
WHERE extent3.id = `value`; # backtick - value considered as column name
(或者)
WHERE extent3.id = value; # without quotes - value considered as column name
它需要是:
WHERE extent3.id = 'value'; # single or double quotes - for string type
或者
WHERE extent3.id = 100; # for int type
修复此问题将有助于解决此错误,请尝试让我们知道它是否有帮助。如果没有,请共享生成的查询以进行进一步分析。谢谢!
推荐阅读
- react-native - React 本机动画第二次不起作用
- css - 这种内部CSS方式有效吗?
- sql - 在 PostgreSQL 中具有多个连接到主表的 UPDATE 语句
- google-cloud-platform - 在 Google Cloud Platform 上自动缩放 Moodle 的架构问题
- e-commerce - 建立电子商务
- python - 移除 Kivy 的窗口边框
- c# - 无法通过命令将值从视图传递到视图模型
- google-cloud-speech - 有没有办法使用 Google Cloud Speech 生成 SRT 文件(或类似文件)?
- html - 如何使用css在垂直方向上用30%的不同颜色和70%的不同颜色划分div颜色
- oracle - oracle月年临时表