亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

非控制器類無法訪問 DbContext

非控制器類無法訪問 DbContext

C#
LEATH 2023-09-16 15:16:43
我想在非控制器類中使用依賴項注入來訪問我的 DbContext 對象。我有一個 ShoppingCart 控制器和一個購物車類,如下所示。在控制器類中,我成功注入了 DbContext,但在 ShoppingCart 類中卻沒有。因此,我顯式地從控制器傳遞 _context 對象。但是當我想直接使用 ShoppingCart 時,即不需要控制器傳遞對象。我收到 ObjectDescoped 異常。ShoppingCartController.cs:  public class ShoppingCartController : Controller  {    private readonly MrbFarmsDbContext _context;    private ShoppingCart cart;    public ShoppingCartController(MrbFarmsDbContext context)    {        _context = context;        cart = new ShoppingCart(_context);    }   }購物車.cs:public class ShoppingCart{    private MrbFarmsDbContext _context;           public ShoppingCart(MrbFarmsDbContext context)//this constructer is called from Controller class.    {                    _context = context;    }    public ShoppingCart()    {    }  }方法:    public static ShoppingCart GetCart(HttpContext context)    {        var cart = new ShoppingCart();        cart.ShoppingCartId = cart.GetCartId(context);        return cart;    }
查看完整描述

1 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

我想在非控制器類中使用依賴項注入來訪問我的 DbContext 對象。

然后將這些類注入到控制器中,不要讓控制器創建它們。

通常情況下,你會有

  • ShoppingCartController(網絡 API),

  • ShoppingCartService(業務邏輯)

  • ShoppingCart(普通的舊 CLR 對象、數據持有者、無邏輯)

控制器應該注入服務??刂破魃踔敛恢烙小吧舷挛摹边@樣的東西。該服務獲取注入的上下文并執行所有業務邏輯。而購物車只是一個數據持有者。

new記住,如果您new在代碼中看到 a 并且它創建的東西不是普通的、愚蠢的數據持有者,那么它可能是錯誤的。


例子:

public class ShoppingCartController : Controller

{

? ? private readonly IShoppingCartService shoppingCartService;


? ? public ShoppingCartController(IShoppingCartService shoppingCartService)

? ? {

? ? ? ? this.shoppingCartService = shoppingCartService;

? ? }

}


public class ShoppingCartService : IShoppingCartService?

{

? ? private readonly MrbFarmsDbContext context;?


? ? public ShoppingCartService(MrbFarmsDbContext context)

? ? {? ? ? ? ? ??

? ? ? ? this.context = context;

? ? }

}


查看完整回答
反對 回復 2023-09-16
  • 1 回答
  • 0 關注
  • 106 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號