Time SubType in DTO benutzen
Adrian Lenherr
:bang:Das mit den DTO's klappt im eigentlichen Super nur das auslesen von Time Feldern funktioniert irgendwie nicht richtig das Schreiben ist kein Problem. Wie kann ich ein Time SubType auslesen?
Ich hab glaub jede Möglichkeit ausprobiert. Ist das Problem dass es in der DB als SmalInt gespeichert wird.
Jedefalls bricht er beim Load() ab
Data.ComeNGoDTO cDTO = new Data.ComeNGoDTO();
cDTO.Code = strCode;
cDTO.Load();
Das DTO hat z.B. folgendes Feld. Ohne diese TimeFelder funktioniert es!!!
[ToPersist]
[FieldType(FieldTypes.Date)]
[SubType(SubTypes.Time)]
[Size(8)]
public DateTime DateGo
{
get { return dateGo; }
set { dateGo = value; }
}
Vielleicht hab ich ja was vergessen zu beachten! Danke für euere Hilfe
Gruss Adi
Adrian Meier
Hallo AdiBitte ruf mich bei Gelegenheit deswegen schnell an.
Gruss, Adrian
G Babel
Moin,genau dieses Thema interessiert mich auch grad brennend. Gibt es eine Lösung ?
Beste Grüße aus Hamburg
Gregor
Roland
Hallo zusammen!Ich würde auch gerne erfahren wie das Auslesen von "Time"-Feldern funktioniert.
Könntet Ihr die Lösung bitte hier veröffentlichen?
Viele Grüße,
Roland
Thilo-Simon Studt
Moin,ich weiß nicht ob es mittlerweile ne aktuellere oder Offizielle Lösung zu diesem Problem gibt, aber ich schreib hier mal kurz was das eigentlich Problem ist und gebe dann noch meine Lösung dazu.
Problem:
Das Framework verwendet quasi ja auch nur unsere Get Set Methode um uns den Wert zu übermitteln bzw. ihn sich zu holen.
Und nu kommen wir auch schon zu dem eigentlichen Problem ... und zwar liefert das Framework einen anderen Wert als es erwartet. Um mal ein Bespiel zu nennen ruft das Framework unsere Set Methode mit dem Wert "0800" auf, erwartet aber wenn es unsere Get Methode aufruft "08:00".
Hatte nen ähnliches Problem schonmal bei der dto search Geschichte bei Date feldern, aber das ist nen anderes Thema :-)
Lösung:
Wir geben dem Framework seine eigene spezielle Eigenschaft um diesen Missstand für uns zu beheben. Als interne Variable hab ich nen String genommen, aber eigentlich ist der typ egal nur sind dann die Umformungsmethoden anders. Wichtig ist nur das die Eigenschaft einen String erwartet, damit wir diese Umformung vornehmen können.
Die BeginTimeDTO Methode ist fürs Framework und mache sie deswegen zur Sicherheit nicht öffentlich.
Die BeginTime Methode ist dann für mich wie ich sie gerade dort am besten brauche, kann natürlich auch Integer oder DateTime sein.
[CODE]
<ToPersist()> _
<FieldType(FieldTypes.Date)> _
<SubType(SubTypes.Time)> _
<FieldName("BeginTime")> _
Private Property BeginTimeDTO() As String
Get
Return ConvertToDTOTime(m_BeginTime)
End Get
Set(ByVal value As String)
m_BeginTime =value
End Set
End Property
Public Property BeginTime() As String
Get
Return ConvertFromDTOTime(m_BeginTime)
End Get
Set(ByVal value As String)
m_BeginTime = ConvertToDTOTime(value)
End Set
End Property
Private Function ConvertToDTOTime(ByVal _sTime As String) As String
Dim Result As String
If _sTime.IndexOf(":") = -1 Then
Result = _sTime.PadLeft(4, "0").Insert(2, ":")
Else
Result = _sTime
End If
Return Result
End Function
Private Function ConvertFromDTOTime(ByVal _sTime As String) As String
Dim Result As String
If _sTime.IndexOf(":") <> -1 Then
Result = _sTime.Remove(_sTime.IndexOf(":"), 1)
Else
Result = _sTime
End If
Return Result
End Function
[/CODE]
Ich hoffe ich konnte mich einigermaßen klar ausdrücken und das ich damit irgendjemanden weiterhelfen konnte der auch auf diesen Betrag gestoßen ist und sich geärgert hat, daß da keine Antwort steht :-)
0
Please sign in to leave a comment.
Comments
0 comments