25 januar 2008

Ajax fejlsøgning

Jeg har igennem længere tid døjet med et periodisk ajax-problem på en kompleks ASP.NET 2.0 side.

En af de store udfordringer i det er, at det kan være ret svært at debugge ajax-problemer. Her fik jeg pludseligt den ide at sætte en proxy op og kigge på trafikken herigennem. Og så var det, at jeg faldt over Fiddler, som er en lille applikation beregnet til at debugge ens webtrafik. Den installerede jeg og efter en halv time var problemet fundet og løst!

Den lille personlige proxy findes her:
http://www.fiddler2.com/

Etiketter: ,

29 juli 2007

Fra Sql til C# object - del 2


Så er ferien ved at være ovre - og jeg har fået lagt sidste hånd på første version af min kodegenerator, som automatisk kan wrappe en .Net klasse rundt om en Sql-tabel.

Jeg har i mangel af bedre navn kaldt den CodeMagic - Sql 2 Object.

Under arbejdet vælger man en database og herefter en tabel. Tabellens felter kan man så vælge at omdøbe i klasse, ændre typer på, ændre skrivebeskyttelse og "null-barhed". Herefter generes cs kode og lidt sql-proc/view.

Undervejs bruges nogle lister over konvertering mellem sql-typer og .net typer. Desuden omdøbes sql-feltnavne automatisk, hvis de f.eks. hedder [Tabel].[Sælger nr.] - som f.eks. Navision synes at det er rart at kalde et sql-felt.

Jeg mangler dog en måde at kunne gemme undervejs i dette forløb og starte igen senere. Jeg leger lidt med tanken om bare at serialisere det objekt, som håndterer arbejdet i en xml-fil, så kan hentes senere. Det skulle vel kunne lade sig gøre...

Etiketter: ,

11 juli 2007

Fra Sql til C# object


Noget jeg ofte føler som drøjsomt arbejde er at lave en klasse som wrapper en sql-tabel (f.eks. Customers i Northwind), så klassen kan loade og save samt har de rette properties i forhold til tabellens kolonner.

Jeg har ikke haft held med at finde noget, som kan gøre det for mig, hvilket jeg synes er mærkeligt, da det da må være et gængs behov.

Men derfor er jeg så småt begyndt at brygge på en funktion som man kan pege ind på en tabel i en sql-database - og hvor den så returnerer en klasse, som wrapper tabellen.

Etiketter: ,

07 juli 2007

Fra DBNulls til almindelige nulls

Jeg har længe døjet med slidsom kodning, når jeg hev data fra en database til et .Net objekt:
Hvis feltet er null, så returneres værdien System.DBNull.Value - og den kan ikke castes til f.eks. en streng.

Dvs.
IDataReader dr;
(...)
string s = (string)dr["Felt_Streng"];

vil fejle hvis værdien i "Felt_Streng" er null i databasen.

Derfor har jeg lavet denne lille konverter:

static T ConvertDBNull<t>(object o)
{
if (o == System.DBNull.Value)
return default(T);
return (T)o;
}


Nu kan jeg skrive

IDataReader dr;
(...)
string s = ConvertDBNull<string>(dr["Felt_Streng"]);

Og eftersom der returneres default-værdien, så virker det også på objekter, som ikke kan være null (f.eks. int).

Etiketter: ,

Programmering i 41000 fod

Hvis du interesserer dig for programmering (primært .Net), så skulle du kigge lidt på denne blog af min gode ven, Poul. Han er ubetinget den dygtigste programmør, jeg kender - desværre er han lidt doven med sine blog indlæg :-)

Men det er nok fordi han har travlt med arbejde - hvis du mangler en dygtig programmør (og har en million eller to), så kan du måske lokke et par måneder ud af ham...

Poul Foged Nielsens blog

Etiketter: