所以希望有一些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的最佳实践正确构建。我似乎无法在最近得到的书中找到一个很好的例子。
我只是无法想象,告诉我的域对象代码像在事务中那样行为的时候,有时候可能会出现这种情况。
任何人都可以告诉我什么我需要做的事情来解决这个问题吗?