我有一個sqlite資料庫,例如c:myDb.sqlite
我想出了如何在SQLKata中建立一個對這個資料庫的查詢:
$query = New-Object SqlKata.Query("myTable")
$compiler = New-Object SqlKata.Compilers.SqliteCompiler
$query.Where("myColumn", "1")
$result = $compiler.Compile($query)
但是我完全不知道如何將其提交給我的Sqlite資料庫。
誰能幫幫我?
謝謝
謝謝你,
Alex
uj5u.com熱心網友回復:
從PowerShell獲得這個作業受到了兩個困難的阻礙:
一般來說,加載與NuGet包相關的程式集以及
Microsoft.Data.SqliteNuGet包,特別是需要在PowerShell中進行額外的、非明顯的作業。PowerShell通常不會像這樣浮現出擴展方法--例如查詢實體上的
.Get()--這就需要明確呼叫【SqlKata.Execution.QueryExtensions】的靜態方法。
具體而言,從PowerShell中使用NuGet包需要以下步驟,這既不方便也不明顯:
僅僅通過Install-Package來安裝NuGet包,或者嘗試從$HOME/.NET SDK專案創建的本地快取中使用它們。 nuget/packages往往不夠,因為它們所依賴的任何程式集并不在同一目錄中,這就是Add-Type的要求。
它們還必須通過一個輔助的 .NET SDK 專案以適合平臺的方式解壓到一個單一的目標檔案夾(每個包或合并),如這個答案中所述。
另外,對于Microsoft.Data.Sqlite包,適合平臺的native庫(例如,win-x64
ative*.dll來自.NET SDK專案的發布檔案夾的 "運行時 "檔案夾子樹)必須在PowerShell(Core)中直接復制到目標檔案夾,但奇怪的是在Windows PowerShell中沒有,至少在包的5.0.9版本中沒有
下面的示例代碼使用了
Add-NuGetType輔助函式,該函式可從這個 MIT 許可的 Gist獲得,它可以自動完成上述所有步驟:
注意:
假設你已經查看了鏈接的代碼,以確保它是安全的(我個人可以向你保證,但你應該總是檢查),你可以直接安裝
Add-NuGetType,如下所示(關于如何使該函式在未來會話中可用或將其轉換為腳本的指示將被顯示):irm https://gist.github.com/mklement0/7436c9e4b2f73d7256498f959f0d5a7c/raw/Add-NuGetType.ps1 | iex當第一次運行時,該函式會下載并安裝一個.NET SDK的私有拷貝,該拷貝被嵌入到后來下載的NuGet軟體包的檔案夾中。這個初始安裝需要一段時間,下面使用的
-Verbose開關會報告其進度。Add-NuGetType不是用于生產使用,而是用于NuGet包的實驗;運行help Add-NuGetType獲取更多資訊。
# Reference the relevant namespaces.
使用命名空間SqlKata
使用命名空間SqlKata.Compilers
使用命名空間SqlKata.Execution
使用命名空間Microsoft.Data.Sqlite
# Load the SqlKata and Sqlite asssemblies.
# 關于如何安裝Add-NuGetType函式,請參見上面的評論。
# 注意:在第一次呼叫時,會下載一個.NET SDK的私有拷貝。
# on demand,這需要一段時間。
Add-NuGetType -Verbose SqlKata, SqlKata.Execution, Microsoft.Data.Sqlite
# First, create sample database './sample.db' with table 'sample_table'/span>
@'
創建表 sample_table (Name string, Age int)。
insert into sample_table (Name, Age) values ("JDoe", 42), ("JRoe", 43);
.保存 ./sample.db
'@ | sqlite3
# Create a [SqliteConnection] instance...
$connection = [SqliteConnection]::new("Data Source=$PWD/Sample.db")
# ... and create a query factory for it..
$sqliteDb = [QueryFactory]:new($connection, [SqlServerCompiler]:new()
# 創建并執行一個樣本查詢。
$query = $sqliteDb. Query("sample_table").Where("Name","JRoe")
# 注意需要使用[SqlKata.Execution.QueryExtensions]的靜態方法,。
# 因為PowerShell并沒有讓*擴展方法*自動可用。
[SqlKata.Execution.QueryExtensions]::Get($query) # output [Dapper.SqlMapper DapperRow] instances
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/309813.html
標籤:
