Sql Server Management Studio - SQL 2008 R2 : Perte de l'intellisense

by MACK Mathieu 26. octobre 2011 08:38

Il est possible, suite à l'installations de mises à jour de Visual studio 2010 par exemple, que vous perdiez l'Intellisense dans SQL Server Management Studio.

C'est un outil plus qu'utile et c'est du coup fort ennuyant !!!

 

Sql server 2008 R2

 

Voici deux solutions possibles en fonction de la version de votre Management studio :

1. L'intellisense ne fonctionne plus depuis la mise jour de Visual Studio, mais fonctionnait avant : Installez les mises à jour cumulatives disponibles ici. Cela devrait corriger le problème de l'activation de l'intellisense.

2. Si le problème ne vient pas de là, il se peut que vous n'ayez pas installé le SP1 de sql server 2008. Il est disponible ici, après son installation Intellisense devrait être de retour !

Sérialisation d'objets vers fichiers pour WP7

by MACK Mathieu 2. avril 2011 07:58

En développant sur Windows Phone 7 on passe nécessairement par un étape où l'on se demande comment sauvegarder nos données sur le téléphone.

Je ne reviendrais pas ici sur le fonctionnement de la gestion des fichiers dans les applications pour WP7, vous trouverez un article ici très bien détaillé. Non, je vous propose ici une classe générique vous permettant de sauvegarder une classe vers un fichier dans vous soucier justement du fonctionnement de l'isolate storage !

L'idée est de sérialiser votre objet et de générer un fichier contenant le flux sérialisé. avec ce code il ne vous faudra plus que le nom du fichier à utiliser !

Pour commencer, il nous faut notre objet à enregistrer :

On utilisera les classes Player et PlayersBdd. La première contiendra des informations sur un joueur tel que son nom et son score, la seconde classe contiendra une liste de players, cela fera office d'une BDD Tongue out :

    public class Player

    {

        public String Name { get; set; }

        public Int32 Points { get; set; }

 

        public Player()

        {

        }

 

        public Player(String name, Int32 points)

        {

            this.Name = name;

            this.Points = points;

        }

    }

 

    public class PlayersBdd

    {

        public List<Player> Players { get; set; }

 

        public PlayersBdd()

        {

        }

 

        public void AddPlayer(Player p)

        {

            if (Players.Count(pl => pl.Name != p.Name) == 0)

            {

                this.Players.Add(p);

            }

        }

    }

Il nous faut maintenant notre classe générique permettant de sérialiser une classe et stocker le flux dans un fichier :

    public static class SerialisationHelper

    {

        public static T Load<T>(String fileName) where T : new()

        {

            IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();

            if (store.FileExists(fileName))

            {

                IsolatedStorageFileStream stream = store.OpenFile(fileName, FileMode.Open);

                XmlSerializer serializer = new XmlSerializer(typeof(T));

                try

                {

                    T _return = new T();

                    _return = (T)serializer.Deserialize(stream);

                    stream.Close();

                    return _return;

                }

                catch (Exception)

                {

                    stream.Close();

                    return default(T);

                }

            }

            else

                return default(T);

        }

 

        public static void Save<T>(T objectToSerialise, String fileName)

        {

            IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();

            XmlWriterSettings writerSettings =

                            new XmlWriterSettings

                            {

                                Indent = true,

                                IndentChars = "\t"

                            };

 

            IsolatedStorageFileStream stream = store.OpenFile(fileName, FileMode.Create);

            try

            {

                XmlSerializer serializer = new XmlSerializer(typeof(T));

                using (XmlWriter xmlWriter = XmlWriter.Create(stream, writerSettings))

                {

                    serializer.Serialize(xmlWriter, objectToSerialise);

                }

            }

            catch (Exception emAll)

            {

                throw emAll;

            }

            stream.Close();

        }

    }

Et maintenant que l'on a de quoi sérialiser tout et n'importe quoi, on va modifier notre classe PlayersBdd pour pouvoir la sauver/recharger :

   

public class PlayersBdd

    {

        public List<Player> Players { get; set; }

 

        public PlayersBdd()

        {

        }

 

        public void AddPlayer(Player p)

        {

            if (this.Players.Count(pl => pl.Name == p.Name) == 0)

            {

                this.Players.Add(p);

            }

        }

 

        public void Load()

        {

            PlayersBdd _p = SerialisationHelper.Load<PlayersBdd>("playersFile.xml");

            if (_p != null && _p.Players != null)

                this.Players = _p.Players;

            else

                this.Players = new List<Player>();

        }

 

        public void Save()

        {

            SerialisationHelper.Save<PlayersBdd>(this, "playersFile.xml");

        }

    }

 

 

Et voilà, le tour est joué, on peut maintenant appeller Load() ou Save() de notre objet PlayersBdd selon si l'on veut charger les données du fichier sérialisé ou sauver l'objet justement, le tout en deux lignes de code !

Et pour télécharger le code source d'une application démo : c'est ici.