iT邦幫忙

0

能否請問這是哪裡錯誤呢?

  • 分享至 

  • xImage

最近在練.net core 的DI

我在想辦法把Controller 的DBContex挪到service裡

就是這一段

    public TransactionController(TransactionDbContext context)
        {
            _context = context;
        }

目前是完成了,但是執行時卻跑出下面這段錯誤

An error occurred while starting the application.
AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: CRUD.DATA.ITransaction Lifetime: Transient ImplementationType: CRUD.Service.TransactionService': Unable to resolve service for type 'CRUD.DATA.ApplicationDbContext' while attempting to activate 'CRUD.Service.TransactionService'.)

這個部份我沒遇過,暫時不知道問題所在
不知道有沒有人能去我的GIT幫我看一下呢?
https://github.com/Jarkwoof/jQuery-Ajax-CRUD

https://ithelp.ithome.com.tw/upload/images/20210318/20110132TvXkOpyld7.jpg

整體架構大概如圖

ApplicationDbContext是放DBContext

public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions options) : base(options)
{ }
public List Transactions { get; set; }
}
ITransaction則是定義CRUD相關方法

public interface ITransaction
{
List GetAll();
//TransacrionDto GetById(int id);
//void NewCategory(TransacrionDto category);
//void EditCategory(TransacrionDto category);
//void DeleteCategory(int id);
}
TransactionService則是實作介面裡的方法

  public class TransactionService : ITransaction
    {
        private readonly ApplicationDbContext _context;

        public TransactionService(ApplicationDbContext context)
        {
            _context = context;
        }

        public List<TransacrionDto> GetAll()
        {
            var query = (from x in _context.Transactions select new TransacrionDto { }).ToList<TransacrionDto>();
            return query;
        }

    }
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
w4560000
iT邦研究生 5 級 ‧ 2021-03-19 11:50:05

Startup.cs

services.AddDbContext<TransactionDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DevConnection")));

泛型改成這樣試試

services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DevConnection")));
tenno081 iT邦研究生 4 級 ‧ 2021-03-21 20:58:34 檢舉

感謝,這個狀況我知道了
但目前有遇到新的問題
執行後會出現這個錯誤
https://ithelp.ithome.com.tw/upload/images/20210321/20110132BqxrtLY6Rb.png

他說不能為null,但是我資料庫裡是有資料的,不知道我哪裡還有錯誤?

w4560000 iT邦研究生 5 級 ‧ 2021-03-22 13:43:46 檢舉

是練習用專案嗎? 能否把資料庫備份起來 寄.bak檔給我
我clone你的專案 debug看看

tenno081 iT邦研究生 4 級 ‧ 2021-03-22 20:49:25 檢舉

我要發表回答

立即登入回答