0
https://stackoverflow.com/a/14988549/294022에서 다음 코드를 훔쳤습니다.비즈니스 로직 계층에서의 트랜잭션
위대한 추상화처럼 보입니다. 그러나 단 하나의 문제가 있습니다. 여러 서비스 호출을 결합하려면 어떻게해야합니까?
DAL 호출을 잘 결합하여 작동합니다. 그러나 서비스를 원하십니까? 해결책이 있습니까?
public class Foo //POCO for data access
{
//Add Attributes for Ormlite
public int Id { get; set; }
}
public class Bar //POCO for data access
{
//Add Attributes for Ormlite
public int Id { get; set; }
}
//your request class which is passed to your service
public class DeleteById
{
public int Id { get; set; }
}
public class FooBarService : MyServiceBase //MyServiceBase has resusable method for handling transactions.
{
public object Post(DeleteById request)
{
DbExec(dbConn =>
{
dbConn.DeleteById<Foo>(request.Id);
dbConn.DeleteById<Bar>(request.Id);
});
return null;
}
}
public class MyServiceBase : Service
{
public IDbConnectionFactory DbFactory { get; set; }
protected void DbExec(Action<IDbConnection> actions)
{
using (var dbConn = DbFactory.OpenDbConnection())
{
using (var trans = dbConn.OpenTransaction())
{
try
{
actions(dbConn);
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
}
}
}
}
나는 이것을 어떻게 알 수 있습니까? – GorillaApe
UnitOfWork를 나타내는 인터페이스를 만든 다음 MsSql 특정 구현을 만듭니다. 인터페이스에 종속 된 서비스 클래스를 만든 다음 구현을 전달할 수 있습니다. 이 방법으로 서비스가 현재 UnitOfWork를 사용하거나 새 UnitOfWork를 시작할 수 있습니다. –
어떻게 전달할 수 있습니까? 매개 변수 - 속성? – GorillaApe