You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have used SqlKata's [Key] attribute without the name specified for years without any errors complaining about it, even with SqlKata.Execution.
However CsvHelper seems to be not happy with these nameless keys.
usingCsvHelper;usingCsvHelper.Configuration;usingSystem.Globalization;MyRecord[]records=[new(){Id=1,Value="A"},new(){Id=2,Value="B"},];varcsv=WriteCsv(records);Console.WriteLine(csv);staticstringWriteCsv<T>(IEnumerable<T>values){usingvarwriter=newStringWriter();varconfig=newCsvConfiguration(CultureInfo.InvariantCulture){MemberTypes=MemberTypes.Properties|MemberTypes.Fields};usingvarcsv=newCsvWriter(writer,config);csv.WriteRecords(values);returnwriter.ToString();}structMyRecord{[SqlKata.Key]// Error! // [SqlKata.Key(nameof(Id))] or any other value for `name` is REQUIRED, when using with CsvHelperpublicintId;publicstringValue;}
The problem occurs when [Key] is used without Name (which defaults to ""). If the code above is executed, an exception is thrown like:
Unhandled exception. CsvHelper.WriterException: An unexpected error occurred. See inner exception for details.
IWriter state:
Row: 1
Index: 0
HeaderRecord:
1
---> System.ArgumentNullException: Value cannot be null. (Parameter 'name')
at SqlKata.ColumnAttribute..ctor(String name)
at SqlKata.KeyAttribute..ctor(String name)
at System.Reflection.CustomAttribute._CreateCaObject(RuntimeModule pModule, RuntimeType type, IRuntimeMethodInfo pCtor, Byte** ppBlob, Byte* pEndBlob, Int32* pcNamedArgs)
at System.Reflection.CustomAttribute.AddCustomAttributes(ListBuilder`1& attributes, RuntimeModule decoratedModule, Int32 decoratedMetadataToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, ListBuilder`1 derivedAttributes)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeFieldInfo field, RuntimeType caType)
at System.Attribute.GetCustomAttributes(MemberInfo element, Boolean inherit)
at CsvHelper.Configuration.ClassMap.ApplyAttributes(MemberMap memberMap)
at CsvHelper.Configuration.ClassMap.AutoMapMembers(ClassMap map, CsvContext context, LinkedList`1 mapParents, Int32 indexStart)
at CsvHelper.Configuration.ClassMap.AutoMap(CsvContext context)
at CsvHelper.CsvContext.AutoMap(Type type)
at CsvHelper.CsvWriter.WriteHeader(Type type)
at CsvHelper.CsvWriter.WriteHeaderFromType[T]()
at CsvHelper.CsvWriter.WriteRecords[T](IEnumerable`1 records)
--- End of inner exception stack trace ---
at CsvHelper.CsvWriter.WriteRecords[T](IEnumerable`1 records)
at Program.<<Main>$>g__WriteCsv|0_0[T](IEnumerable`1 values) in C:\Users\user\source\repos\sln1\proj1\Program.cs:line 26
at Program.<Main>$(String[] args) in C:\Users\user\source\repos\sln1\proj1\Program.cs:line 13
The text was updated successfully, but these errors were encountered:
I have used SqlKata's
[Key]
attribute without the name specified for years without any errors complaining about it, even withSqlKata.Execution
.However CsvHelper seems to be not happy with these nameless keys.
The problem occurs when
[Key]
is used withoutName
(which defaults to""
). If the code above is executed, an exception is thrown like:The text was updated successfully, but these errors were encountered: