【发布时间】:2021-02-10 02:22:39
【问题描述】:
这是我在 .net core 3.1 中实现存储库 unitofwork 和通用的代码。 我编写存储库、用户存储库、工作单元、上下文等。 运行应用程序后出现错误: InvalidOperationException:无法解析“Repository.UnitOfWork”类型的服务
我不知道我应该将什么作为“DbContextOptions”传递给上下文或工作单元
这是我的控制器:
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
UnitOfWork db;
public HomeController(ILogger<HomeController> logger, UnitOfWork db)
{
_logger = logger;
this.db = db;
}
}
这是我的上下文:
public PandanetContext(DbContextOptions<PandanetContext> options) : base(options)
{
}
这是我的工作单元:
public class UnitOfWork : IDisposable
{
PandanetContext db;
public UnitOfWork(PandanetContext db)
{
this.db = db;
}
private UserRepository userRepository;
public UserRepository UserRepository
{
get
{
if (userRepository == null)
{
userRepository = new UserRepository(db);
}
return userRepository;
}
}
}
这是我的存储库:
public class UserRepository : Repository<UserDomainModel>
{
PandanetContext db;
public UserRepository(PandanetContext context) : base(context)
{
db = context;
}
}
这是动作结果:
public IActionResult Index()
{
UserDomainModel user = new UserDomainModel();
user.Name = "تست";
db.UserRepository.create(user);
db.UserRepository.Save();
return View();
}
在startup.cs中:
services.AddDbContext<PandanetContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
【问题讨论】:
-
是的,startup.cs 中有@Stefan
-
在 startup.cs 中:services.AddDbContext
(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); -
嗯......这很有趣......你能发布完整的错误吗?
-
啊,对不起,我弄错了。您需要注册工作单元。
标签: c# .net-core entity-framework-core