1
我使用TPL發送電子郵件給最終用戶而不延遲api響應,我不知道應該使用哪種方法,因爲我在這裏處理數據庫上下文。我做了方法2,因爲我不確定在任務運行時數據庫上下文是否可用,所以創建了一個新的EF對象,或者即使這樣做都是錯誤的。任務並行庫和數據庫上下文
public class OrdersController : ApiController {
private AllegroDMContainer db = new AllegroDMContainer();
public HttpResponseMessage PostOrder(Order order) {
// Creating a new EF object and adding it to the database
Models.Order _order = new Models.Order{ Name = order.Name };
db.Orders.Add(_order);
/* Method 1 */
Task.Factory.StartNew(() => {
_order.SendEmail();
});
/* Method 2 */
Task.Factory.StartNew(() => {
Models.Order rOrder = db.Orders.Find(_order.ID);
rOrder.SendEmail();
});
return Request.CreateResponse(HttpStatusCode.Created);
}
}