verwendetes Datenbanksystem: <SQL 2014>
Hi Community,
ich greife mittels Dapper auf eine SQL Datenbank zu.
Aus einer Tabelle Person hole ich eine Variable 'geschl'.
In der SQL Tabelle hat diese Variable 'geschl' das Format (numeric (1,0),null)
Die Variable in C# habe ich als 'decimal' deklariert.
public decimal geschl { get; set; }
Eine globale Variable Geschlecht ist vorab auf 1 gesetzt.
Person obj = cboKind.SelectedItem as Person;
GlobaleVariablen.Geschlecht = obj.geschl;
Nach Abfrage des ersten Datensatzes der Tabelle Person wird die vordefinierte Variable Geschlecht
mit 0 überschrieben, obwohl die in der Tabelle enthaltene Variable 'geschl' 1 enthält.
Wer kann mir einen Tipp geben, wie ich dieses Problem löse?
Vielen Dank!
susi
VS 2017 Community
Warum nimmst du nicht direkt int?
Geschlecht würde ich hier eher als Enum definieren oder Alternativ per Guid Referenzieren aus einer entsprechenden Tabelle mit allen möglichen Einträgen.
Decimal und Numeric sind in diesem Kontext eher der falsche Ansatz.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
@T-Virus
Vielen Dank für die Antwort.
Die Struktur der Datenbank ist mir vorgegeben.
Ich muß auf 'geschl' Typ (numeric(1,0),null) zugreifen.
VS 2017 Community
Demjenigen, der numeric(1,0) für sowas missbraucht, würde ich auf die Finger hauen.
Vermutlich musst Du einen CAST in Deinen SQL Query einbauen, der numeric(1,0) zu einem Integer macht.
Dann sollte Dapper damit direkt nen Integer lesen können und Du kannst auf Decimal verzichten.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
@Abt
Danke für die klaren Worte.
So werde ich es machen.
Wenn man das Ziel kennt, kann der Weg auch mal sandig sein. 😮)
Die Datenbank hat ihre Zeit auf dem Buckel...
susi
VS 2017 Community
SELECT geschl, CAST(geschl AS Integer) geschl_int FROM Person
---susi---
Bitte benutze die richtigen Code-Tags [Hinweis] Wie poste ich richtig?
VS 2017 Community
@T-Virus
Ich muß mich korrigieren.
Nicht Dapper wars, sondern ich, der Depp.
Ich habe doch glatt vergessen, die Abfrage um den Feldnamen 'geschl' zu erweitern. 8o
Dapper kann numeric((1,0)null) in int umwandeln.
VS 2017 Community
Daran hatte ich auch keine Zweifel. Aber auf Anwendungsseite hier mit Integer zu arbeiten ist trotzdem wohl die bessere Idee.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code