我有一個控制器,它調用 api 來獲取 Positions 和 Employees 的列表。首先,它將 api 結果放入模型類 - IDMSElements (1)。然后控制器獲取 IDMSElements 對象并將其轉換為 PositionSlots 對象 (2)。然后,PositionSlots 對象需要使用來自數據庫的附加數據進行更新 (3)。所以在我的控制器的簡化版本中,我有: (1) IDMSElements elements = getslots.CopyDocToElements(doc); (2) PositionSlots myslots = (PositionSlots)elements; (3) myslots.UpdateDetails(db);我擔心 myslots.UpdateDetails(db) 因為控制器中的其他代碼取決于已運行的 UpdateDetails。我希望在創建 PositionSlots 對象時默認運行 UpdateDetails。但我認為可能不應該在構造函數中進行多個數據庫調用。如何在實例化 PositionSlots 對象后自動調用 UpdateDetails?非常感謝!控制器:[Authorize]public class PSListController : Controller{ private static readonly log4net.ILog _logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private PositionControlContext db = new PositionControlContext(); private GetPositionSlots getslots = new GetPositionSlots(); ... public async Task<ActionResult> ByCostCenter(int costCenter) { string ssapiuri = getslots.BuildAPIuri($"/current/?UDAKunit={costCenter.ToString()}"); _logger.Debug($"{ssapiuri.ToString()}"); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); HttpResponseMessage result = await getslots.GetDataFromIDMSapi(ssapiuri); stopWatch.Stop(); _logger.Debug($"Response received. Milliseconds elapsed: {stopWatch.Elapsed.TotalMilliseconds.ToString()}"); if (result.StatusCode != HttpStatusCode.OK) { _logger.Debug("Error retrieving data from API. Milliseconds elapsed: " + stopWatch.Elapsed.TotalMilliseconds.ToString()); throw new HttpException(404, "NotFound"); } stopWatch.Restart(); XDocument doc = XDocument.Load(result.Content.ReadAsStreamAsync().Result); stopWatch.Stop(); _logger.Debug($"API result loaded into XDocument. Milliseconds elapsed: {stopWatch.Elapsed.TotalMilliseconds.ToString()}\n"); _logger.Debug(doc.ToString()); }
1 回答

海綿寶寶撒
TA貢獻1809條經驗 獲得超8個贊
您可以通過編寫一個方法來實現這一點:
IDMSElement.ToPositionSlot(db)
然后按如下方式使用它:
PositionSlots myslots = elements.Select(x => x.ToPositionSlot(db))
- 1 回答
- 0 關注
- 94 瀏覽
添加回答
舉報
0/150
提交
取消