2024年10月8日 星期二

EF Core Power Tools 對預存程序逆向工程之限制

之前有介紹 Stored Procedure(預存程序)的單元測試,這部分需要搭配 EF Core Power Tools

工具先做到逆向工程,方便產生相關 entities 類別,其中包含SP,但在實務上會遇到瓶頸



假設目前設計一個 SP,大概是撈取 Customers 資料表的資料


此時透過 EF Core Power Tools 逆向工程做出來 Result 如下

可以看出對應的欄位都有做出來,很方便


此時若不幸的 SP 內容中,插入一段去呼叫另一個 SP 例如 usp_GetCategory


同步修改 usp_GetCustomers 的內容,內容中會去呼叫 usp_GetCategory


此時,透過 EF Core Power Tools 重新整理(或是重新逆向工程)


完成後,觀察 usp_GetCustomersResult 類別,相關屬性值變成 Id,Text


怎麼跟一開始的有所出入?推測,因為逆向工程判斷到執行 usp_GetCategory 後,

以為拿到回傳值就是最後結果了,後續就不判斷了


若要解決這個問題,可將回傳值先用 table 變數介接,調整如下




此時,重新整理 ER-Model,欄位既可正常產出



參考

沒有留言:

張貼留言