1
在我自己寫這個之前,有沒有一個c#方法可以創建由aspnetregsql安裝的表,sprocs和視圖?創建ASP.Net成員資格數據庫的代碼
在我自己寫這個之前,有沒有一個c#方法可以創建由aspnetregsql安裝的表,sprocs和視圖?創建ASP.Net成員資格數據庫的代碼
據我所知,沒有直接執行此操作的API - aspnet_regsql.exe
工具無論如何都只是引用磁盤上的腳本文件。
了先機就如何落實這個自己:
您可以通過手動Process.Start
執行aspnet_regsql.exe
。
或者您可以從命令行運行程序,並使用命令行選項來轉儲出腳本。然後將這些腳本編輯爲與數據庫不相關的腳本(或者不要 - 取決於您),將這些腳本作爲嵌入式資源存儲在您的應用程序中,在運行時將其解壓縮,然後使用SqlConnection
和ExecuteNonQuery
對數據庫運行這些腳本。
以下是命令行選項aspnet_regsql.exe
:
http://msdn.microsoft.com/en-us/library/ms229862(v=vs.80).aspx
下面是一些代碼,我已經習慣了實現第二個選項:
ExecuteSqlScriptResource("MyDb", "MyAssemblyName.Scripts.aspnet_regsql_add.sql");
// ...
static void ExecuteSqlScriptResource(string connectionName, string resourcePath)
{
using (Stream scriptStream = Assembly.GetExecutingAssembly()
.GetManifestResourceStream(resourcePath)
)
{
if (scriptStream == null)
{
WriteLine(string.Format("Failed to open resource {0}", resourcePath));
return;
}
using (
var sqlConnection = new SqlConnection(
ConfigurationManager
.ConnectionStrings[connectionName].ConnectionString
)
)
{
using (var streamReader = new StreamReader(scriptStream))
{
var svrConnection = new ServerConnection(sqlConnection);
var server = new Server(svrConnection);
server.ConnectionContext.ExecuteNonQuery(streamReader.ReadToEnd());
}
}
}
}
-sqlexportlonly BAM! ty先生 –
andrew
@andrew:確實:)這不是數據庫不可知論者,如果這是你的關注。我手動編輯該文件。如果你想要一些slapped的代碼來執行這個腳本,我可以在今天晚些時候給你。大約10-15行。 –
@andrew:很高興這有幫助。如果答案解決了您的問題,請將其標記爲已接受(答案左上方的複選標記)。 –