Avatar billede ultik Nybegynder
27. oktober 2006 - 13:20

ADO.NET 2.0, SqlCommandBuilder og Default Values

Hej,

Jeg har opdateret en *stor* mængde af min kode fra et velfungerende .NET 1.1 miljø med en meget gammel Data Access Block, til et NET 2.0 miljø, med dertilhørende opdateret Enterprise Library og dens nye DAB.

Dette har medført en subtil ændring, i forbindelse med det kode der håndterer at opdatere et in-memory DataTable op imod SQL-serveren. Tilsyneladende kan min SqlCommandBuilders InsertCommand ikke længere håndtere at undlade at give NULL-værdier med i de tilfælde hvor der er default-værdier for en kolonne.

I det tidligere setup virkede koden perfekt, så jeg antager Command-builderen simpelthen ikke lavede parametre for NULL-valued fields i hvert row. Det gør den tydeligvis nu, og det resulterer selvfølgelig i en masse fejl ala den følgende:

"Cannot insert the value NULL into column 'Created', table 'MyTable'; column does not allow nulls. INSERT fails.
The statement has been terminated. "

I de tilfælde hvor min kolonne har en non-null klausul i kombination med en default-værdi specificeret.

Jeg har ikke været i stand til at finde noget som helst om dette på nettet, så er der nogen der har et clue?

Det virker jo umiddelbart som et breaking-change, men det er meget subtilt.

Er der en property jeg overser, hvis default-værdi har ændret sig eller noget? Al hjælp ses gerne. Jeg har desværre ikke mulighed for at videregive koden (det ville også hurtigt blive uoverskueligt), men processen er som følger:

Skaf Database object
Lav SqlConnection object
Lav DataAdapter
Lav simpel "SELECT * FROM MyTable" SelectCommand til DataAdapter
Lav SqlCommandBuilder på DataAdapter
kør UpdateDataset på databasen, med SqlCommandBuilderens Insert, Update og DeleteCommands. (UpdateBehavior.Transactional, men Standard giver tilsyneladende samme resultat).
DataTable.AcceptChanges
.. Cleanup.

Med venlig hilsen,
Ulrik Jensen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester