Entity Framework et la compatibilité arrière (problème Datetime2).

Vous possédez un OS récent, comme Windows 7, vous développez avec les outils les plus modernes (disons VS 2010 au hasard) et, bien entendu votre base de données installée en local est SQL Server 2008. D’une part parce que c’est une bonne version, mais surtout parce que vous n’avez pas trop le choix… Vous créez une application pour un client qui utilise SQL Server 2005 et là, pof! dès qu’il exécute votre logiciel il y a une exception du genre “The version of SQL Server in use does not support datatype 'datetime2”… More...


Tags: , , , Categories: Astuce | Bug | Données | LINQ | SQL Server

Fri 25 Jun 2010 13:50 2 Comments
Actions: E-mail | Permalink | Comment RSSRSS comment feed

Roadmap Microsoft

Microsoft nous prépare plein de bonnes choses pour les mois à venir ... Quelques dates plus ou moins précises ont filtré aux dernières TechEd USA, voici un condensé des principales annonces de cette roadmap :

Commençons par les produits n'ayant pas de date annoncées mais dont on sait que cela viendra assez vite :

  • Silverlight 3. Plus de 50 nouvelles features dont la possibilité de faire tourner les applications en dehors du browser (comme une appli desktop WPF).
  • Blend 3, qui viendra dans la même foulée ainsi que le Silverlight Toolkit et les .NET RIA services.
  • Windows mobile 6.5.

Les produits annoncés pour la fin 2009/début 2010 :

  • Windows 7 le tant attendu ! Notamment avec le multi-touch... (yapluka trouver des 22" qui supportent ça sans trop casser la tire-lire !)
  • Visual Studio 2010 et .NET 4. Je ne peux malheureusement rien en dire, la bêta que j'ai est sous NDA mais je vous en parlerai dès que ça sera possible (disons sans trahir la NDA qu'il y a un nouveau look, et que par exemple le designer de Silverlight est intégré à l'IDE comme pour WPF, mais non je n'ai rien dit ! :-) ). On trouve aussi F#, langage avec lequel il faudra compter dans l'avenir. De nombreuses infos sont déjà accessibles sur ce langage, une petite recherche sur le Web vous en dira plus.
  • Windows server 2008 R2
  • Exchange 2010
  • Windows Azure
  • Hyper-V Server 2008 R2
  • Et plein d'autres produits (Geneva, Dublin, Stirling, Velocity... autant de noms de code qui auront bientôt un nom officiel !).

A venir en début 2010 :

  • Office 2010 (donc) avec Office Web, Sharepoint 2010, Visio 2010, Project 2010...

Première moitié 2010 :

  • SQL Server 2008 R2
  • Madison, nom de code de la base de données orientée massivement parallèle et gestion de Tera octects dans tous les sens.

Pour plus de détails et avoir plus d'infos vous pouvez accéder au blog de Bruce Kyle qui a posté un billet avec des liens intéressants sur la roadmap.


Tags: , , , , , , , , Categories: Annonce | Design | Silverlight | SQL Server | Visual Studio

Sat 23 May 2009 02:33 2 Comments
Actions: E-mail | Permalink | Comment RSSRSS comment feed

Un éclairage sur les techniques d'accès aux données sous .NET

Depuis la sortie de .NET Microsoft n'arrête plus sa course folle ! La plupart des technologies publiées faisaient partie d'un plan presque totalement connu à l'avance, comme WPF, WCF etc. Il a fallu du temps pour qu'émerge ses "modules" de .NET car même le plus puissant des éditeurs de logiciels du monde ne peut pas releaser la totalité d'une montagne comme .NET en un seul morceau. S'il était clair que WPF serait la nouvelle gestion des interfaces utilisateurs et que Windows Forms n'était qu'un "os à ronger" en attendant, le foisonnement des technologies tournant autour des données n'était pas forcément visible ni prévisible il y a quelques années. Et même aujourd'hui savoir ce qui existe et comment s'en servir avec l'ensemble des autres technologies n'est pas forcément une mince affaire !

Un petit dessin valant tous les discours, voici un diagramme qui tourne sur les blogs américains de Microsoft et que j'ai en partie traduit pour vous, en espérant que cela vous aidera à y voir plus clair !

Quelques précisions pour certains acronymes ou noms de technologies :

[Faite un clic-droit sur l'image et copiez-la pour l'afficher en 100% dans Word ou autre ]


Tags: , , , , , , Categories: Données | Framework .NET | LINQ | SQL Server

Sun 21 Sep 2008 06:18 0 Comments
Actions: E-mail | Permalink | Comment RSSRSS comment feed

How Do I ? - Les vidéos Microsoft pour bien se lancer / complément

Pour ceux qui lisent ce blog par flux RSS (et ils sont très nombreux) il a de fortes chances pour que vous ne puissiez voir l'edit que j'ai fait du billet précédent "How Do I ? - Les vidéos Microsoft pour bien se lancer". J'ai fait une mise à jour des liens concernant les vidéos de la série "How Do I". Donc si cela vous intéresse, rafraichissez le message si votre lecteur de flux le permet, sinon tapez sur le lien en début de paragraphe pour ouvrir la dernière version du billet dans votre brower...

Tags: Categories: Annonce | Astuce | Design | Framework .NET | LINQ | Silverlight | SQL Server | WPF

Fri 05 Sep 2008 15:54 0 Comments
Actions: E-mail | Permalink | Comment RSSRSS comment feed

Comment passer outre la limitation du DISTINCT sur un SELECT contenant un champ text sous SQL Server

Voici un billet moins "hi-tech" que d'habitude. Point de LINQ dans tout çà, juste un bon server SQL SERVER, une table contenant un champ Text ou NText et une bête requête qui peut retourner plusieurs fois le même enregistrement. Et comme on ne désire pas voir les copies éventuelles, bien entendu on place instinctivement une clause DISTINCT dans le SELECT.

C'est beau, simple comme SQL... Sauf que... SQL Server n'aime pas du tout la clause DISTINCT s'il y a un champ texte dans le SELECT. Et pour cause, il ne sait pas comment comparer les contenus, du coup point de DISTINCT possible.

Quelques bonnes âmes vous conseilleront peut-être :

a) de changer tous vos champs texte en varchar
b) de vous passer du champ texte dans le SELECT et de l'obtenir à part dans une autre requête

Les conseilleurs ne sont pas les codeurs ! Les varchar ont une limite de 8000 caractères et il n'est pas toujours possible de les substituer à Text/NText. De plus modifier tous les champs de ce type dans une application peut être un énorme travail (code, procédures stockées, vues, tout cela à mettre à jour). Solution bidon donc.

Quant à faire le SELECT DISTINCT sans les champs texte puis à faire une seconde requêtre derrière pour les obtenir, c'est franchement lourd et pas forcément sans conséquence sur le code appelant (qui doit faire autant de sous requêtes que de records pour obtenir les champs texte, et les stocker, etc).

Non, il existe plus simple, et un peu plus vicieux : faire une jointure de la table sur elle même.

Oui, tout simplement. L'astuce consiste à faire un select dans la table de tous les champs (y compris les champs texte) mais sans la clause DISTINCT, table qu'on lie à elle même mais ce coup ci en faisant un SELECT DISTINCT qui lui omet les champs texte... La feinte est bonne, mais elle ne saurait faire de miracle, en effet, les champs texte ne seront pas utilisés pour faire la DISCTINCTion entre les records. Cette solution n'a donc qu'un seul hic : elle ne peut pas fonctionner si vous voulez vraiment que le DISTINCT prenne en compte les champs texte. Là je n'ai pas vraiment d'astuce à vous proposer. Mais pour les autres, voici un bout de code SQL fictif qui vous montrera la syntaxe à utiliser :

SELECT t1.c1, t1.c2, t1.LeChampTexte
FROM MaTable t1 JOIN
     (SELECT DISTINCT c1,c2 FROM MaTable WHERE Desc LIKE 'Test%') AS t2
     ON t1.c1 = t2.c1

on suppose ici que le champ "c1" représente la clé (il peut s'agir de plusieurs champs, of course, à vous d'adapter le code), que le champ "c2" est un autre champ sur lequel le DISTINCT portera et que "LeChampTexte" ... est le champ texte qui pose problème. On voit mieux ici que le DISTINCT ne sera effectué que sur "c1" et "c2". Mais cela permet bien de faire un DISTINCT tout en retournant les champs texte, le tout en une seule requête...

Bon SQL et... Stay Tuned !


Tags: Categories: Astuce | SQL Server

Tue 08 Jul 2008 15:47 0 Comments
Actions: E-mail | Permalink | Comment RSSRSS comment feed