ソリューション、DotnetCore.CAPによってチュートリアルの準備ができて最初のABPのテンプレートコード。
から実行されるコード
容器ABPウィンザー城DI、及び無インスタンスDbContext注射、それがABPによって、避けられないDbcontextのaddabpある()血管DIに注入されます。だから、ServiceCollectionにCAPサービスを注入したい、また、それがABPフレームワークをサポートしていませんEFを使用することが期待されています。addcap()が成功するための前提条件は、DbContextの中のServiceProviderに反映例で私たちの手を得ることができなければならないので、これは、優先度の注入の問題です。
私たちは、ソースコードのCAPを見てみましょう
あなたが行うことになっているので?
dbcontext例にならないように参照文字列は、データベースに直接接続することができます。
次に、トランザクションが処理されます。
プレスCAPコースはado.net、EFの例を与えられた、ということです。
https://github.com/dotnetcore/CAP
EFが動作していないので、その後、DapperのEFを使用するようにしてください。
https://aspnetboilerplate.com/Pages/Documents/Dapper-Integration
これはdappermodule、ABPのアプリケーションのアプリケーション層内のモジュールにこのモジュールを定義します。
public class SomeApplicationService : ITransientDependency { private readonly IDapperRepository<Person> _personDapperRepository; private readonly IRepository<Person> _personRepository; public SomeApplicationService( IRepository<Person> personRepository, IDapperRepository<Person> personDapperRepository, ICapPublisher capPublisher) { _personRepository = personRepository; _personDapperRepository = personDapperRepository; _capBus = capPublishe; } public void DoSomeStuff() { var people = _personDapperRepository.Query("select * from Persons"); await _capBus.PublishAsync("othersystem.aftergetperson", input); } }
因为在ABP的applicationservice中的方法,默认是自带unitofwork的,所以代码中无须再用事务方法体。