我过去使用过代表,所以我熟悉它们的用途和好处。我也做了很多阅读/研究,但我试图把我的脑袋绕在这个问题上,却一无所获。我想使用委托(我相信)来封装一些代码或在方法中使用委托来调用一些外部代码。
我在 20 个不同的地方使用相同的代码将实体框架更新包装在事务中。我想把代码放在一个地方;但是,我不能单独在一个方法中做到这一点,因为有一个中间部分每次都会改变。我正在寻找一些关于如何最好地做到这一点的想法/说明(.net 3.5,ms sql 2010)。- 谢谢
代码示例:
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();
}
}
}