此代码将自动生成新的部件号。这是BO GetNewPart的后处理BPM
int iPartnum = 0;
string cPartid = string.Empty;
Erp.Tables.Company Company;
foreach (var ttpart_xRow in ttPart)
{
var ttpartRow = ttpart_xRow;
Company = (from Company_Row in Db.Company
where Company_Row.Company == Session.CompanyID
select Company_Row).FirstOrDefault();
iPartnum = (decimal)Company["AutoGenerate_c"] + 1;
cPartid = System.Convert.ToString(iPartnum);
ttpartRow.PartNum = cPartid;
Services.Lib.UpdateTableBuffer._UpdateTableBuffer(Company,"AutoGenerate_c", iPartnum);
}
答案 0 :(得分:0)
它只是不工作还是有错误信息?
Services.Lib.UpdateTableBuffer._UpdateTableBuffer(Company,"AutoGenerate_c", iPartnum);
我个人从未使用或甚至看过这个Lib项目,所以我无法保证。我会在事务范围内手动更新对象,因为我怀疑GetNewPart曾触及该数据库,因此可能无法创建事务。
using (System.Transactions.TransactionScope txScope = IceDataContext.CreateDefaultTransactionScope())//start the transaction
{
//Your Logics go here
Db.Validate();
txScope.Complete();//commit the transaction
}
作为旁注,我试图将这些类型的东西保留在公司记录之外,因为系统中的几乎所有过程都接触到它,并且我不想要一个进程来锁定它或导致奇怪的竞争条件。我通常喜欢保留一条只为此特定目的而触及的记录,因此我有一个UDCodeType / UDCode用于此类事情。