|
Hallo zusammen, kann mir jemand veraten was dem Parameter "@IsNull_Nachname" an dieser Stelle übergeben wird. Natürlich nicht der konkrete Wert ( > : Me._adapter.UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@IsNull_Nachname", System.Data.SqlDbType.Int, 0, System.Data.ParameterDirection.Input, 0, 0, "Nachname", System.Data.DataRowVersion.Original, True, Nothing, "", "", "")) Dieses Codefragment stammt aus der Prozedur InitAdapter eines DataAdapters ( wer hätte das gedacht ) und ich versuche im Moment hinter die Logik zu kommen nach der der Commandbuilder das Updatecommand bildet. Was soll mir z.B. das folgende Fragment eines Statements sagen? WHERE (([ID] = @Original_ID) AND ((@IsNull_Nachname = 1 AND [Nachname] IS NULL) OR ([Nachname] = @Original_Nachname)) Und jetzt die vielleicht naive Frage: Warum muss ich überhaupt seitenlange Sql-Statements bauen um heraus zu finden welche Datensätze sich geändert haben ? Könnte sich das Dataset nicht merken welche Sätze verändert wurden und es würde einfach reichen zu schreiben 'Update .... Set .... where ID = @xy and Datachanged = true ' ? War nicht der Sinn der Sache den Entwickler von Routineaufgaben zu entlasten ? Wenn ich mir jetzt angucke welche Codemonstren nötig sind um eine ganz gewöhnliche Updateaktion auszuführen habe ich den Eindruck es ist das genaue Gegenteil der Fall. Und wenn ich dann einfach den Assistenten benutze und die Tabelle dierekt an ein Grid oder ein paar Textfelder binde ist eigentlicht der ganze schöne Plan mit Trennung von Daten, Business und UI vorbei. Oder es ist alles ganz anders und ich habe es nur nicht verstanden. Letztes ist nicht unwahrscheinlich. Eigentlich sollte diese Frage gar nicht so lang werden aber ich werde seid langem das Gefühl nicht los das MS bei Ado.Net auf halben Wege stehengeblieben ist. Gruss Arpad
|