伙計們。
我有一個關于 EF Core DbCommandInterceptor 的問題。
讓我們有一個像這樣有 2 個欄位的類
public class User
{
public Guid Id { get; set; }
public string SameData { get; set; }
}
public class TestClass
{
public Guid Id { get; set; }
public Guid TestClassId { get; set; }
[NotMapperd, MyAttr]
public TestClass TestClass { get; set; }
}
whereUser和TestClass都位于不同的背景關系中(例如UserDbContext, TestDbContext)。MyAttr是marker屬性,僅此而已。
因此,我想撰寫一個攔截器,每次我們嘗試獲取有關TestClasses 的資訊時都會啟動它,但是在獲取資料后,它應該通過對 UserDbContext 的交叉請求獲取有關用戶的附加資料(有可能,因為我User Id在命令執行后并且可以Id在請求中使用它)
我知道,它應該是DbCommandInterceptor.ReaderExecuted或DbCommandInterceptor.ReaderExecutedAsync在這種情況下,但我不明白如何獲取結果中的物件資訊(我可以得到行但我不明白我應該做什么,我應該如何映射它)。如果需要,我可以在專案中使用其他庫(如 Dapper 等)。
誰能幫我得到
- 結果型別 - 具體物體型別或物體集合型別?
- 結果為 C# 物件(PO??CO 或 POCO 集合)?
謝謝你。
uj5u.com熱心網友回復:
我知道,在這種情況下它應該是 DbCommandInterceptor.ReaderExecuted 或 DbCommandInterceptor.ReaderExecutedAsync,但我不明白如何在結果中獲取有關物件的資訊
EF 命令攔截器不支持這一點。您可以將 DataReader 替換為不同的。但是生成查詢是為了填充特定的物件圖,攔截器 API 不會公開該物件圖。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/431239.html
上一篇:EF核心過濾
