2009-10-05 3 views
1

J'ai une application WPF qui met à jour ma base de données à partir d'un modèle d'entité dans le code. Il peut y avoir des cas où il met à jour la base de données alors qu'il y a des utilisateurs connectés et je voudrais le mettre en mode mono-utilisateur pour éviter les erreurs.Existe-t-il un moyen de définir le DB en mode mono-utilisateur en C#?

Je voudrais également éviter d'utiliser sql. Je sais que je peux courir en utilisant sql:

DataContext.ExecuteCommand("ALTER DATABASE...") 

je préfère utiliser une commande dans une bibliothèque C# pour le faire, mais je ne sais pas où chercher.

Existe-t-il un moyen de définir la base de données sur SUM sans utiliser SQL?

Répondre

3

J'utilise les objets serveur SMO comme ceci:

Server server = GetServer(); 
     if (server != null) 
     { 
      Database db = server.Databases[Settings.Instance.GetSetting("Database", "MyDB")]; 
      if (db != null) 
      { 
       server.KillAllProcesses(db.Name); 
       db.DatabaseOptions.UserAccess = DatabaseUserAccess.Single; 
       db.Alter(TerminationClause.RollbackTransactionsImmediately); 

Le problème est que cela a ouvert une autre connexion que mon datacontext ainsi me le coup d'envoi et ne pas me laisser accéder à la DB. En fin de compte, je devais revenir à l'utilisation de SQL.

Questions connexes