我使用Aspnet Boiler板开始了一个新项目,但不再觉得要在后台使用存储库和大量隐藏的工程。
因此期待获得实例化的实例数据库上下文 Abp存储库框架和
请问如何获取该实例?
答案 0 :(得分:5)
- 直接使用Ef核心LINQ查询。
您可以使用DbContext
的{{1}}获得GetDbContext()
的实例。
IDbContextProvider
- 直接使用SaveChanges提交更改,而不是依赖抽象的事务。
您可以通过应用private readonly YourDbContext _ctx;
public YourService(IDbContextProvider<YourDbContext> dbContextProvider)
{
_ctx = dbContextProvider.GetDbContext();
}
属性来禁用交易
Here是有关使用ASP.NET Boilerplate进行事务管理的相关文章。
答案 1 :(得分:0)
@NitinSawant我有一个类似的问题,尽管就我而言,所涉及的参数专门称为unitOfWork
。我有一个通过模块的Postinitialize
方法运行的数据库清除和更新种子帮助程序类:
public override void PostInitialize()
{
// The hypothetical 'SweeperClass' in this example uses constructor
// injection to obtain a IDbContextProvider instance and from there
// get hold of a DbContext.
//
// As written, this code threw a null argument exception.
var sweeperClass = IocManager.Resolve<SweeperClass>();
// ...do stuff...
}
在这种情况下,幸运的是,还需要解决一个工作单元来包装另一个对象的构造的问题。
using Abp.Domain.Uow;
public override void PostInitialize()
{
using (IocManager.Resolve<IUnitOfWorkManager>().Begin())
{
var sweeperClass = IocManager.Resolve<SweeperClass>();
// ...do stuff...
}
}
@koryakinp的答案为我提供了大部分解决方案,我只需要进行上述调整即可使特定用例的工作顺利进行。