Dapper C#: Ein Parameterloser Standardkonstruktor oder ein passender SignaturfehlerC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Dapper C#: Ein Parameterloser Standardkonstruktor oder ein passender Signaturfehler

Post by Anonymous »

Ich möchte eine Liste der Partitionen für eine bestimmte Tabelle erhalten.

Code: Select all

public record Partition(string PartitionName, int OrdinalPosition);

public class MysqlService
{
//...

public IEnumerable
 GetPartitions(string tableName)
{
using var conn = new MySqlConnection(_dbConnString);
conn.Open();
return conn.Query(
$"SELECT PARTITION_NAME, PARTITION_ORDINAL_POSITION " +
$"FROM information_schema.partitions WHERE TABLE_NAME = '{tableName}';");
}
}
Aber mein Code gibt einen Fehler wie
aus

Code: Select all

Unhandled exception. System.InvalidOperationException: A parameterless default constructor or one matching signature (System.String PARTITION_NAME, System.UInt64 PARTITION_ORDINAL_POSITION) is required for Services.Partition materialization
at Dapper.SqlMapper.GenerateDeserializerFromMap(Type type, IDataReader reader, Int32 startBound, Int32 length, Boolean returnNullIfFirstMissing, ILGenerator il) in /_/Dapper/SqlMapper.cs:line 3297
at Dapper.SqlMapper.GetTypeDeserializerImpl(Type type, IDataReader reader, Int32 startBound, Int32 length, Boolean returnNullIfFirstMissing) in /_/Dapper/SqlMapper.cs:line 3131
at Dapper.SqlMapper.TypeDeserializerCache.GetReader(IDataReader reader, Int32 startBound, Int32 length, Boolean returnNullIfFirstMissing) in /_/Dapper/SqlMapper.TypeDeserializerCache.cs:line 151
at Dapper.SqlMapper.TypeDeserializerCache.GetReader(Type type, IDataReader reader, Int32 startBound, Int32 length, Boolean returnNullIfFirstMissing) in /_/Dapper/SqlMapper.TypeDeserializerCache.cs:line 50
at Dapper.SqlMapper.GetTypeDeserializer(Type type, IDataReader reader, Int32 startBound, Int32 length, Boolean returnNullIfFirstMissing) in /_/Dapper/SqlMapper.cs:line 3085
at Dapper.SqlMapper.GetDeserializer(Type type, IDataReader reader, Int32 startBound, Int32 length, Boolean returnNullIfFirstMissing) in /_/Dapper/SqlMapper.cs:line 1835
at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition command, Type effectiveType)+MoveNext() in /_/Dapper/SqlMapper.cs:line 1105
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 734
...
Wie kann ich das beheben?
Ich habe versucht, UInt64 anstelle von int für den Typ von OrdinalPosition zu verwenden, aber der gleiche Fehler ist aufgetreten.
Meine Umgebung:
  • C# .NET Core Console-Anwendung (net6.0)
  • Dapper 2.0.123
  • MySQL 8.0

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post