2011-06-25 102 views
8

我想知道什麼是動態安裝成員資格架構的最佳方式。C#以編程方式創建ASP.NET成員資格架構

現在我想到的解決方案是以某種方式運行aspnet_regsql.exe參數在我的數據庫連接上執行。

我該如何做到這一點?有沒有更好的辦法?

回答

8

好的我發現了一個更好的方法來實現這個功能,我仍然使用MembershipExists()函數,但是我用這個聲明來安裝它,直到幾分鐘前我才知道這個聲明。

SqlServices.Install(database, SqlFeatures.All, connectionString); 
2

難道這樣的:

public static void Initialize() 
    { 
     var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["membership"].ConnectionString); 

     if (!MembershipExists(connection)) 
     { 
      // create schema 
      string regsql = Path.Combine(System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(), "aspnet_regsql.exe"); 
      string args = string.Format(@"-E -S {0} -A all -d {1}", connection.DataSource, connection.Database); 

      var proc = Process.Start(regsql, args); 
      if (proc != null) 
       proc.WaitForExit(); 
     } 
    } 

    public static bool MembershipExists(SqlConnection connection) 
    { 
     try 
     { 
      connection.Open(); 
      var query = new SqlCommand("select count(*) from sysobjects where name = 'aspnet_CheckSchemaVersion' and type = 'P'", connection); 
      return query.ExecuteScalar() as int? == 1; 
     } 
     finally 
     { 
      connection.Close(); 
     } 
    } 

不知道它會如何表現在生產環境中。