wlEmoticon-smile.png

Restore FileListOnly From Disk

0

J’ai récemment eu un exercice à effectuer sur la machine d’un collègue

“J’ai un backup, mais je n’ai que visual studio installé, pas de Sql Server Management Studio ni rien et faut restorer la base de données”

Ok, donc :

  1. Pas de SSMS c’est noté
  2. Obligation de faire un MOVE des fichiers du backup
  3. Pas de connaissance des fichiers logiques contenus dans le backup

Pour lancer la restauration, il me faut pouvoir exécuter du script SQL. Je décide donc de partir sur du SqlCMD

Il me faut connaitre la liste des fichiers à restaurer contenus dans le backup :

1: restore filelistonly from disk = Plus >
wlEmoticon-smile.png

SQL SERVER 2008 : Migrer vers une table supportant un HierarchyId

0

Il existe pas mal d’articles sur le nouveau type CLR HierarchyID. Voici quelques pointeurs d’ailleurs :

Par contre, il y a peu d’informations sur la façon de faire pour migrer une table contenant par exemple un Identifiant et son parent (EmployeeID et ManagerID) vers une table supportant un type HierarchyID.

J’ai trouvé quelques essais, qui se sont trouvés être … faux (c’est balot !!)

Le principe Plus >

wlEmoticon-smile.png

WinRT : MVVM

0

Il y’a déjà pas mal de développeurs (moi le premier) qui se sont empressés de commencer à développer en WinRT des applications Metro destinés à Windows 8

Pour certains, don’t je fais parti, l’utilisation du pattern MVVM est un plus, une philosophie, une habitude, bref un “must have coding pattern”

Pour faire du MVVM, j’utilise suivant les projets soit PRISM soit MVVM light Toolkit

En WinRT, aucun portage n’a encore était réalisé de ces 2 frameworks.

Je vous propose donc en téléchargement une version de MVVM Light, migrée vers vers WIN RT, utilisable en C#

Vous pouvez le télécharger ici : Plus >

wlEmoticon-smile.png

WinRT : Download Image

0

Dans la série des Posts “Comparons WPF, Silverlight et WinRT” :

Une différence de technique pour télécharger un élément (nous prendrons ici une image par exemple)

Dans le cas de WP7, nous utliserons la classe WebClient, et l’appellerons de manière asynchrone (on a pas le choix) et du coté WinRT, on utilisera le nouveau mot clé “async” et “wait”

WP7 :

public void GetImage(Uri url) {     var webClient = new WebClient();

    webClient.OpenReadCompleted += WebClientOpenReadCompleted;     webClient.OpenReadAsync(url); }

void WebClientOpenReadCompleted(object sender, Plus >

wlEmoticon-smile.png

WinRT : Namespaces

2

Dans la série des Posts “Comparons WPF, Silverlight et WinRT” :

Si vous devez déclarer des namespaces en WinRT, sachez que la syntaxe change (heuresement que Visual Studio aide !)

WPF :

xmlns:conv= »clr-namespace:TimeTrack.Converters » xmlns:mess= »clr-namespace:Bewise.Phone;assembly=Bewise.Phone »

WinRT :

xmlns:conv= »using:TimeTrack.Converters » xmlns:mess= »using:Bewise.Phone »

Deux remarques:

  1. Remplacement de clr-namespace par using
  2. Plus d’obligation d’utiliser le nom de l’assembly si vous référencez un namespace provenant d’une autre assembly

To be continued ! Plus >

image.png

WinRT : INotifyPropertyChanged

5

Si vous faites du MVVM, et que vous tentez une migration vers WinRT, attention à l’implémentation de INotifyPropertyChanged

La subtilité vient de l’apparition de cette interface dans un autre namespace, lié à l’UI :

Windows.UI.Xaml.Data.INotifyPropertyChanged

D’ailleurs, on le remarque vite, lors de l’ajout du using :

Si vous migrez du code, et que votre INotifyPropertyChanged est encore celui de System.ComponentModel, et bien aucun de vos contrôles XAML ne s’abonnera à cet évènement de votre ViewModel !

Keep The Fight !

wlEmoticon-smile.png

WinRT : Dependency Properties

3

La déclaration en WinRT est différente de WPF / Silverlight.

Elle différe lors de la phase Register sur l’objet static DependencyProperty.

On note qu’en WPF / SL4, le Register prend un Type (typeof(TOTO)) comme argument, alors qu’en WinRT, il prend une chaine de caractères.

Note : Pour moi, ceci est un comportement imputable à la CTP de WinRT, je serai surpris que ce soit encore le cas lors de la RTM. My 2 Cents

WPF:
public int MatchesCount {     get { return (int)GetValue(MatchesCountProperty); }     set { SetValue(MatchesCountProperty, value); } } public static readonly
Plus >

WinRT : DesignMode

1

Dans la série des Posts “Comparons WPF, Silverlight et WinRT” :

Si vous voulez savoir si vous êtes en mode design, par code :

WPF

var prop = DesignerProperties.IsInDesignModeProperty;                     _isInDesignMode                         = (bool)DependencyPropertyDescriptor                                      .FromProperty(prop, typeof(FrameworkElement))                                      .Metadata.DefaultValue;

                    // Just to be sure                     if (!_isInDesignMode.Value                         && Plus >

wlEmoticon-smile.png

WinRT : Reflection

1

Dans la série des Posts “Comparons WPF, Silverlight et WinRT” :

En WPF, comme en silverlight, accéder par réflection à des métadatas d’objets se fait relativement simplement.

Par exemple, vérifier l’existance d’une propriété dans un type, en WPF, comme en Silverlight :

var myType = this.GetType();

if (!string.IsNullOrEmpty(propertyName) && myType.GetProperty(propertyName) == null)     throw new ArgumentException("Property not found", propertyName);

En WinRT, les choses changent quelque peu. Vous devez passer par la méthode GetTypeInfo() qui vous donnera accés à des méthodes Plus >

wlEmoticon-winkingsmile.png

WinRT : Dispatcher

1

Dans la série des Posts “Comparons WPF, Silverlight et WinRT” :

Si vous voulez accéder au dispacther dans votre code (sans être obligatoirement dans une page xaml)

Définition

Première chose notable, le nom de la classe change:

Dans WPF et Silverlight, la classe est : Dispatcher et elle se situe dans System.Windows.Threading En WinRT, la classe s’appelle : CoreDispatcher et elle se situe dans Windows.UI.Core

Dans les exemples suivants, vous trouverez la façon d’appeller le Dispatcher et sa méthode d’invocation qui est différente en Plus >

Haut de page