이전에는 대리인을 사용 했으므로 사용법과 이점에 대해 잘 알고 있습니다. 나는 또한 많은 독서/연구를 해왔지만이 문제를 해결하고 아무데도 쓰려고 노력하고 있습니다. 대리자를 사용하여 일부 코드를 캡슐화하거나 메서드 내에서 대리자를 사용하여 일부 외부 코드를 호출하고 싶습니다.C# 대리자/메서드에 대한 설명
트랜잭션에서 엔티티 프레임 워크 업데이트를 래핑하기 위해 20 개 장소에서 동일한 코드를 사용하고 있습니다. 한 곳에서 코드를 원합니다. 그러나 매번 변경 될 중간 부분이 있기 때문에 자체적으로 메소드에서 수행 할 수는 없습니다. 나는 몇 가지 아이디어를 찾고 있는데/내가 이것을 가장 잘 할 수있는 방법에 대한 설명이다. (.net 3.5, ms sql 2010). - thnx
코드 샘플 : 당신은 기능 위임 (또는 람다)를 통과
void AddItem(string objDetails)
{
// setup method specific entity objects
SomeObject obj = new SomeObject { Details = objDetails };
//////// Begin transaction code that I would like to encapsulate ///////
bool success = false;
using (Entities data = new Entities())
{
for (int i = 0; i < s.BaseSettings.CommandRetries; i++)
{
using (TransactionScope transaction = new TransactionScope())
{
try
{
//////////////////////////////////////////////////////////////
///////// BEGIN Code that I would like to change/call different each time ////////
data.AddToSOMEOBJECTs(obj);
//////////////// END //////////////////////////////////
//// RETURN TO ENCAPSULATED CODE ////
data.SaveChanges(false);
transaction.Complete();
success = true;
break;
}
catch (Exception ex)
{
if (ex.GetType() != typeof(UpdateException))
{
throw new Exception("Unhandled db exception.");
}
}
}
}
if (success)
{
data.AcceptAllChanges();
}
else
{
throw new Exception();
}
}
}
내가 장님이 될 수는 있지만, 어디'A'입니다 한정된? – Prescott
변경하고 싶은 부분에서도, 그 밖에 무엇이 좋을지를 보여줄 수 있습니까? – Prescott
내가 변경하고 싶은 부분은 항상 프레임 워크의 일부 테이블을 업데이트합니다. 그러나 테이블은 업데이트되는 내용에 따라 매번 변경됩니다. 나는 코드 레퍼런스를 고쳤다. 기본적으로 트랜잭션은 업데이트 (매번 변경해야하는)를 래핑하는 것입니다. – Adam