Uninteressantes von einem Anwendungsentwickler aus Linse
 

Beiträge in der Kategorie "Microsoft .NET"

 

ADO.NET und Views in MS SQL

Kategorie "Microsoft .NET" Microsoft .NET  Verfasst am 14.12.2011 19:46 14.12.2011 19:46  0 Kommentare 0 Kommentare  

Nach langer Zeit mal wieder ein Kommentar von mir. :)

In meinem neuen Job habe ich mittlerweile viel mit Microsoft Produkten wie SQL Server und Visual C# zu tun. Ich muss sagen, dass es nicht annähernd so schlimm ist, wie die meisten Programmierer die ich so kenne immer sagen. Es macht schon fast Spaß. ;)

Heute stieß ich aber auf ein Problem, welches so richtig zum kotzen war.

Serverseitig setzen wir in einer größeren Server Applikation ADO.Net ein, was eine Abstraktionsebene für den Zugriff auf Datenbanken bereit stellt. Alle Tabellen stehen im Programmcode als Objekt bereit, sodass man auf "echte" SQL Queries in 99% der Fälle verzichten kann.

Über einen Wizard kann man diese Objekte automatisch erzeugen lassen. Man muss hier eigentlich nichts von Hand machen. Problematisch wird es hier, wenn man auf komplizierte Views zugreifen will. Denn ADO.Net verlangt in jeder Tabelle/View einen eindeutigen Primärschlüssel.

In einem komplizierten View mit GROUP BY, DISTINCT oder Subqueries findet ADO.Net keinen Primärschlüssel mehr und verweigert das Erzeugen der Objekte. Tja... Und dann steht man da... *grrr*

Abhilfe schafft hier ein kleiner Hack, der einen Primärschlüssel "ercheatet". Dadurch das man den bei Views sowieso nicht braucht, ist das aber wurscht. ;) Folgendes setzt man als Spalte in das View ein:

ISNULL(CAST(
   CASE ROW_NUMBER() OVER (ORDER BY columnNames)
      WHEN ROW_NUMBER() OVER (ORDER BY columnNames) THEN 
      ROW_NUMBER() OVER (ORDER BY columnNames)  
   ELSE 0  
END AS int), 0) AS ID

Der SQL Schnipsel erzeugt eine Spalte mit einer fortlaufenden Nummer, die ADO.Net lustigerweise als Primary Key annimmt. Wieso das so ist: Keine Ahnung. Ich war einfach froh mit einer laufender Server Applikation im Keller nach Hause fahren zu dürfen. ;)

Die Tage wird es bestimmt noch mehr zu .NET und anderen Microsoft-"Verbrechen" geben.
Seid gespannt. :)

Tag Cloud

28c3   3D   ASCII   Akismet   Allgemein   Animation   Apache   Arbeit   Arch Linux   Archos 5   Asterix & Obelix   Audio   Auto   BOINC   Bash   Bitlbee   Blog v2.0   Bluetooth   Bodenwerder   Bouncer (BNC)   Bundestagswahl 09   Bücher   CCC   Chromium   Comics   Computerspiele   Content Managment System   Creative Commons   CyanogenMod   Cybton   DAU Alarm   DLRG   Datenbanken   Datenschutz   Debian   Deutsches Rotes Kreuz   Domains   Drucken   EZFlash Vi   Eclipse   Eingabegeräte   Ekelhaft   Email   Essen   Ethernet   Evernote   ExtJS   Facebook   Fail2Ban   Fanartikel   Feiertage   Fernsehn   Firefox   Flash   Flattr   Fotografie   Fritz!Box   Fun   Fußball   GEZ   GPS   Gameboy Advance   Games   Git   Gnome   Google   Google Android   Google Android Hacking   Google+   Grafiken   Grand Theft Auto IV   HTC   HTC Desire Z   HTML   Handhelds   Handy   Handy Apps   Hardware   Hardware Hacking   Homebrew   ICQ   IRC   ImapFilter   Internet   Internet Explorer   Internet Relay Chat (IRC)   Internetzensur   Java   JavaScript   JeeGeek   Justiz   Kino   Konzert   Kultur   Kumpels   Legend of Zelda   Linux   Linux Mint   MS SQL Server   Marilyn Manson   Microsoft .NET   Minecraft   Mobile   Mozilla   Music Player Daemon (MPD)   Musik   MySQL   NPD   Natur   Netbeans   Netbooks   Netzwerk   Nintendo   Nintendo DS   Nintendo DSi   Nintendo Wii   Notebook   OpenOffice   OpenOffice Impress   OpenWRT   PC Hardware   PHP   Pandora   Papierkorb   Patentrecht   Pidgin   Piratenpartei   Piwik   Politik   Privat   Programmieren   Projekte   PulseAudio   QR-Code   RSS   Rammstein   Root   SD-Karte   SOGo Scalable OpenGroupware   SSH   SVN   Schlüsselband   Schule   Seagate Freeagent Dockstar   Server   Serversicherheit   Sesamstraße   Shellscripting   Shopping   Shortlinker   Skype   Social Networks   Software   Spam   Spenden   Spongebob   Straßenverkehr   Support   TV   Tablets   Technik   Textverarbeitung   Thunderbird   Truecrypt   Twitter   Typo3   UMTS   USA   USB   Ubuntu   Underground Shopping   Urheberrecht   Urlaub   VMWare   VNC   Vereine   Verkaufen   Verstärker   Videorecorder   Viren und andere Schädlinge   Virtual Box   Vorratsdatenspeicherung   WLAN   Wahlen   Webspace   Wehrdienst   Weserbergland   Willkommen   Windows   Windows 7   X11   XFCE   XML   XStylus   Zeitschriften   Zensur   bind9   ffmpeg   ncurses   netcup   openSSL   r0ket   sim4000.de   vim   Überwachung   Überwachungsstaat   üäx.de   1337