entity framwork的TransactionScope事务回滚问题
public string ReceiveOrder(int custId, string xml){
try
{
using (JXEntities jx = new JXEntities())
{
using (TransactionScope transaction = new TransactionScope())
{
[color=#FF6600]jx.Connection.Open();[/color] //加载
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(xml);
XmlNode xmlOrderHead = xmldoc.SelectSingleNode("root");
string orderNo = "";
OrderHead o = new OrderHead();
if (xmlOrderHead != null)
{
try { remark = xmlOrderHead.SelectSingleNode("Remark").InnerText; }
catch { }
o.Remark = remark;
}
jx.OrderHeads.AddObject(o);
jx.SaveChanges();
XmlNodeList xmlOrderLine = xmlOrderHead.SelectNodes("lines");
OrderLine line = new OrderLine();
if (xmlOrderLine.Count > 0)
{
foreach (XmlNode node in xmlOrderLine)
{
try { pickTime = node.SelectSingleNode("PickTime").InnerText; }
catch { }
line.PickTime = pickTime;
jx.OrderLines.AddObject(line);
jx.SaveChanges();
}
transaction.Complete();
}
catch (Exception ex)
{
error = ex.Message;
}
代码运行后产生错误:基础提供程序在 Open 上失败。
InnerException = {"该伙伴事务管理器已经禁止了它对远程/网络事务的支持。 (异常来自 HRESULT:0x8004D025)"}
网上查找解决方案,都说要配置本机和数据库所在的服务器的MSDTC。
但是我无意中添加了一句jx.Connection.Open()。就是红字的部分。结果运行成功没错误了。我就挺纳闷的,不知道是咋回事,谁能告诉下。
另外问个小白的问题, 运行using (JXEntities jx = new JXEntities())这句话,是不是自动打开数据库连接了?