{"record":{"id":"2dbbaeea3bc390cd","repo":"DapperLib/Dapper","slug":"columnname","errorCode":null,"errorMessage":"columnName","messagePattern":"columnName","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"Dapper/SimpleMemberMap.cs","lineNumber":18,"sourceCode":"﻿using System;\r\nusing System.Reflection;\r\n\r\nnamespace Dapper\r\n{\r\n    /// <summary>\r\n    /// Represents simple member map for one of target parameter or property or field to source DataReader column\r\n    /// </summary>\r\n    internal sealed class SimpleMemberMap : SqlMapper.IMemberMap\r\n    {\r\n        /// <summary>\r\n        /// Creates instance for simple property mapping\r\n        /// </summary>\r\n        /// <param name=\"columnName\">DataReader column name</param>\r\n        /// <param name=\"property\">Target property</param>\r\n        public SimpleMemberMap(string columnName, PropertyInfo property)\r\n        {\r\n            ColumnName = columnName ?? throw new ArgumentNullException(nameof(columnName));\r\n            Property = property ?? throw new ArgumentNullException(nameof(property));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Creates instance for simple field mapping\r\n        /// </summary>\r\n        /// <param name=\"columnName\">DataReader column name</param>\r\n        /// <param name=\"field\">Target property</param>\r\n        public SimpleMemberMap(string columnName, FieldInfo field)\r\n        {\r\n            ColumnName = columnName ?? throw new ArgumentNullException(nameof(columnName));\r\n            Field = field ?? throw new ArgumentNullException(nameof(field));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Creates instance for simple constructor parameter mapping\r\n        /// </summary>\r\n        /// <param name=\"columnName\">DataReader column name</param>\r","sourceCodeStart":1,"sourceCodeEnd":36,"githubUrl":"https://github.com/DapperLib/Dapper/blob/72a54c475f75e18cb93cba0809d00a5e6e49efd9/Dapper/SimpleMemberMap.cs#L1-L36","documentation":"SimpleMemberMap's property overload (columnName, PropertyInfo) rejects a null columnName with ArgumentNullException(nameof(columnName)). The column name is stored as the canonical DataReader column key and cannot be null. A null property is also rejected on the same line.","triggerScenarios":"Constructing new SimpleMemberMap(null, prop); Dapper internals creating a member map where the column name resolved to null (e.g. a reader column with a null/empty name, or a custom ITypeMap returning a map with a null column).","commonSituations":"A custom ITypeMap implementation returning SimpleMemberMap with a null columnName; a DataReader whose schema returned a null column name (rare malformed provider result).","solutions":["When building a SimpleMemberMap, always pass the concrete reader column name; null-check before constructing.","If authoring a custom ITypeMap, return null from GetMember/GetConstructorParameter rather than a map with a null column name."],"exampleFix":"// before (custom map)\nreturn new SimpleMemberMap(null, prop);\n\n// after\nreturn columnName is null ? null : new SimpleMemberMap(columnName, prop);","handlingStrategy":"validation","validationCode":"if (columnName is null) return null; // for custom ITypeMap\nreturn new SimpleMemberMap(columnName, property);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["In custom ITypeMap implementations, return null instead of building a map with a null column name.","Validate reader column names before constructing member maps."],"tags":["argument-null","member-map","internal"],"backgroundTag":null,"analyzedSha":"72a54c475f75e18cb93cba0809d00a5e6e49efd9","analyzedAt":"2026-08-13T14:18:18.115Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}