如果我有这样的业务流程集:
每个流程都有一个Insert Method
像这样:
public string InsertReward()
{
using (IfxConnection con = new IfxConnection(ConfigurationManager.ConnectionStrings["rr35"].ToString()))
{
int affectedRow = -1;
int req_serial = 0;
req_serial = GetMaxSerial(DateTime.Now.Year);
StringBuilder cmdTxt = new StringBuilder();
cmdTxt.Append(" INSERT INTO RewardProcess(gen_year,gen_ser,bonus_type,bonus_date,bonus_desc,main_code,year,emp_num,active_ser) VALUES (?,?,?,?,?,?,?,?,? ) ");
using (var myIfxCmd = new IfxCommand(cmdTxt.ToString(), con))
{
myIfxCmd.CommandType = CommandType.Text;
myIfxCmd.Parameters.Add("gen_year", IfxType.Integer);
myIfxCmd.Parameters.Add("gen_ser", IfxType.Integer);
myIfxCmd.Parameters.Add("bonus_type", IfxType.SmallInt);
myIfxCmd.Parameters.Add("bonus_date", IfxType.Date);
myIfxCmd.Parameters.Add("bonus_desc", IfxType.NVarChar);
myIfxCmd.Parameters.Add("main_code", IfxType.Integer);
myIfxCmd.Parameters.Add("year", IfxType.Integer);
myIfxCmd.Parameters.Add("emp_num", IfxType.Integer);
myIfxCmd.Parameters.Add("active_ser", IfxType.SmallInt);
if (con.State == ConnectionState.Closed)
{
con.Open();
}
myIfxCmd.Parameters[0].Value = ((object)Req_year) ?? DBNull.Value;
myIfxCmd.Parameters[1].Value = ((object)req_serial) ?? DBNull.Value;
myIfxCmd.Parameters[2].Value = ((object)Bonus_type) ?? DBNull.Value;
myIfxCmd.Parameters[3].Value = ((object)Bonus_date) ?? DBNull.Value;
myIfxCmd.Parameters[4].Value = ((object)Bonus_desc) ?? DBNull.Value;
myIfxCmd.Parameters[5].Value = ((object)Main_code) ?? DBNull.Value;
myIfxCmd.Parameters[6].Value = ((object)Year) ?? DBNull.Value;
myIfxCmd.Parameters[7].Value = ((object)Emp_num) ?? DBNull.Value;
myIfxCmd.Parameters[8].Value = ((object)Active_ser) ?? DBNull.Value;
affectedRow = myIfxCmd.ExecuteNonQuery();
}
con.Close();
con.Dispose();
if (affectedRow > 0)
{
return DateTime.Now.Year + "," + req_serial;
}
else if (affectedRow == 0)
{
return string.Empty;
}
else
{
return affectedRow.ToString();
}
}
}
在插入业务流程之后,我使用process ID
插入交易。
现在我想创建一个general method
(对于所有进程),此方法将检查进程ID并调用其插入方法,然后调用有关事务方法的第二个方法。我希望使用ambient transaction
.net中是否有东西允许调用方法知道它的签名是否为字符串?
Void RootMethod(int processId)
{
using(TransactionScope scope = new TransactionScope())
{
//1-Detect the signature of the insertion method by process id then call it by passing the suitable filled object
//2-call transaction method
}
}
答案 0 :(得分:0)
您好我建议使用编译时方法:为注册商生成代码通过其签名字符串索引相关方法(您可以使用带有此机制的标记属性的CodeDom)。