莆田市网站建设_网站建设公司_HTML_seo优化
2026/1/21 17:35:45 网站建设 项目流程
这句错误是 ADO.NET(DataTable、DataAdapter、SqlBulkCopy 等)抛出来的,意思是:
“在内存里的 DataTable 'projectInfo' 中找不到名为 'createtime' 的列,但外部数据源(或映射)却要求提供这个列。”
常见触发场景
  1. SqlBulkCopy.ColumnMappings.Add("createtime", "createtime");
    而 DataTable 里根本没有这叫 createtime 的列。
  2. DataAdapter.Update 时,数据库表比 DataTable 多了一列,且源列映射没去掉。
  3. 手动构造 DataTable 时漏了 createtime,但随后用 DataRow 或 XML 填充时外部结构要求它存在。
解决思路(三选一即可)
  1. 给 DataTable 补上缺失的列
csharp
复制
if (!projectInfo.Columns.Contains("createtime"))projectInfo.Columns.Add("createtime", typeof(DateTime));
 
  1. 如果数据库端已经把 createtime 删了,就把映射也删掉
csharp
复制
// 找到对应映射并 Remove
var map = bulkCopy.ColumnMappings.Cast<SqlBulkCopyColumnMapping>().FirstOrDefault(m => m.SourceColumn == "createtime");
if (map != null) bulkCopy.ColumnMappings.Remove(map);
 
  1. 用 ColumnMappings 时只映射实际存在的列,或者干脆让 SqlBulkCopy 自动匹配(不手动 AddMappings)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询