所以希望有一些CSLA技能可以幫助我看到更好的方法。我有一種情況,我想從對象外部手動創建事務,並將我的transactionAttribute設置爲手動。在csla和手動交易系統中使用交易
所以我有一些代碼,看起來像這樣:
using (SqlConnection conn ConnectionManager<SqlConnection>.GetManager("Db").Connection)
{
connectionTransaction = conn.BeginTransaction();
objectRef = objectRef.Save();
//other logic here
objectRef = objectRef.Save();
connectionTransaction.Commit();
}
然後保存方法中有這樣的事情對於數據訪問:
using (var conn = ConnectionManager<SqlConnection>.GetManager("Db").Connection)
{
using (var cm = conn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "Proc_Name";
// param definitions
cm.ExecuteNonQuery();
}
}
當我做到這一點我收到以下錯誤:
當分配給命令的連接處於未決的本地事務中時,ExecuteNonQuery需要該命令進行事務。該命令的Transaction屬性尚未初始化。
好了,這樣才能理解它在說什麼,我可以通過將事務分配給命令來輕鬆修復。但我想知道這是否按照CSLA的最佳實踐正確構建。我似乎無法在最近得到的書中找到一個很好的例子。
我只是無法想象,告訴我的域對象代碼像在事務中那樣行爲的時候,有時候可能會出現這種情況。
任何人都可以告訴我什麼我需要做的事情來解決這個問題嗎?