2016-01-23 73 views
1

我使用NPoco作爲我的BLA。我需要知道在.NET應用程序中使用NPoco的自定義/原始SQL查詢的最佳做法是什麼?哪一層用於使用NPoco的原始SQL查詢?

一般來說,我知道原始SQL查詢不鼓勵,但與NPoco我有情況下有意義的加入多個表(5,6或更多)來獲得8,9列表結果。

我有一個通用的數據庫爲我的數據庫,我用它來訪問我的模型。所以我應該在哪一層編寫原始SQL查詢,其中的結果,我需要在我的BL?我是否應始終創建臨時DTO來接收/映射此類查詢的結果或以動態方式接收它們? (將這些結果映射到動態對象的價格有多高?)

在此先感謝您的寶貴意見。

Dany

回答

0

在我看來,PetaPoco是您的數據層。你應該把你的查詢放在BL中。

使用動態只適用於從數據庫獲取短暫的臨時結果,但我總是會返回來自BL的對象列表(可以是業務對象或DTO)。

+0

但是你認爲在BL中編寫原始sql查詢是個好主意嗎?因爲我可能不得不從SQL服務器支持其他數據庫,在這種情況下,如果我的SQL查詢使用任何SQL服務器特定的關鍵字,我將不得不更改我的BL,我認爲這不是一個好主意。 – Dany

+0

PetaPoco負責使用不同數據庫的一些問題(僅支持一些)。當然,如果你想編寫複雜的語句,你會很失敗。在這種情況下,我相信你可以使用存儲過程或者是,添加更復雜的模式來支持這一點。 –