ABPコードプロジェクトで分散トランザクション処理を使用してCAP

ソリューション、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的,所以代码中无须再用事务方法体。

 

おすすめ

転載: www.cnblogs.com/wikiz/p/11115894.html