Ich möchte Dapper verwenden, um über dbf-Dateien abzufragen. In meiner Datei example.dbf habe ich zwei Spalten:Dapper: Nicht in der Lage, String von DBF zu analysieren (Error analysing column)
- Wert - Typ numeric
- Name - Typ CHARACTER
Ich schreibe Klasse ExampleDbf
class ExampleDbf
{
public int Value { get; set; }
public string Name { get; set; }
}
Jetzt will ich schreiben zwei einfache Abfrage
var listOne = connection.Query<ExampleDbf>("SELECT value FROM Example");
var listTwo = connection.Query<ExampleDbf>("SELECT name, value FROM Example");
LISTONE sind in Ordnung, aber wenn ich listTwo ausführen ich habe folgende System.Data.DataException:
Additional information: Error parsing column 0 (name=System.Byte[] - Object)
Wenn ich Standard Datareader verwende ich etwas wie das
example.name = System.Text.Encoding.ASCII.GetString((byte[])reader["name"]).Trim();
Natürlich schreiben muss ich etwas schreiben kann wie dies:
class ExampleDbf2
{
public int Value { get; set; }
public byte[] Name { get; set; }
public string StringName
{
get
{
return System.Text.Encoding.ASCII.GetString((byte[])Name).Trim();
}
}
}
es So funktioniert nun
var listTwo = connection.Query<ExampleDbf2>("SELECT name, value FROM Example");
Aber diese Lösung ist sehr hässlich, vielleicht hat jemand eine bessere Lösung.
Die Daten aus dem DB sind Zeichendaten; Dapper wird niemals 'Encoding' Entscheidungen in Ihrem Namen treffen: das ist eine viel zu unklare Frage ... Sie könnten eine Shim-Eigenschaft verwenden, wenn Sie wollten ... –