Linq to sql中如何使用一个统一事务保存级联表格
2012-03-22 16:02
666 查看
需要使用到DataContext的嵌套
服务代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Configuration;
namespace CsharpTrainer.Linq.Service.Northwind
{
public class CascadeTableService
{
public bool AddCascadeTables(CascadeA tableA, List<CascadeB> tablesB, List<CascadeC> tablesC)
{
bool result;
try
{
using (DataContext context = new DataContext(ConfigurationManager.ConnectionStrings["NorthwindConnStr"].ToString()))
{
using (NorthwindDBDataContext northwindContext = new NorthwindDBDataContext())
{
northwindContext.CascadeA.InsertOnSubmit(tableA);
northwindContext.CascadeB.InsertAllOnSubmit(tablesB);
northwindContext.CascadeC.InsertAllOnSubmit(tablesC);
northwindContext.SubmitChanges();
}
}
result = true;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
result = false;
}
return result;
}
}
}
客户端测试代码如下:
Guid caId, cbId, ccId;
caId = Guid.NewGuid();
CascadeA tableA = new CascadeA
{
CaId = caId,
CaContent = "Content A1"
};
List<CascadeB> tablesB = new List<CascadeB>();
List<CascadeC> tablesC = new List<CascadeC>();
CascadeB tableB;
CascadeC tableC;
for (int i = 1; i <= 3; i++)
{
cbId = Guid.NewGuid();
tableB = new CascadeB
{
CbId = cbId,
CaId = caId,
CbContent = "Content B" + i.ToString()
};
tablesB.Add(tableB);
for (int j = 1; j <= 3; j++)
{
ccId = Guid.NewGuid();
tableC = new CascadeC
{
CcId = ccId,
CbId = cbId,
CcContent = "Content C" + i.ToString() + j.ToString()
//CcContent = sb.ToString()
};
tablesC.Add(tableC);
}
}
CascadeTableService service = new CascadeTableService();
bool result = service.AddCascadeTables(tableA, tablesB, tablesC);
if (result)
Console.WriteLine("Add Cascade Tables Successfully!");
else
Console.WriteLine("Failed to add cascade tables!");
服务代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Configuration;
namespace CsharpTrainer.Linq.Service.Northwind
{
public class CascadeTableService
{
public bool AddCascadeTables(CascadeA tableA, List<CascadeB> tablesB, List<CascadeC> tablesC)
{
bool result;
try
{
using (DataContext context = new DataContext(ConfigurationManager.ConnectionStrings["NorthwindConnStr"].ToString()))
{
using (NorthwindDBDataContext northwindContext = new NorthwindDBDataContext())
{
northwindContext.CascadeA.InsertOnSubmit(tableA);
northwindContext.CascadeB.InsertAllOnSubmit(tablesB);
northwindContext.CascadeC.InsertAllOnSubmit(tablesC);
northwindContext.SubmitChanges();
}
}
result = true;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
result = false;
}
return result;
}
}
}
客户端测试代码如下:
Guid caId, cbId, ccId;
caId = Guid.NewGuid();
CascadeA tableA = new CascadeA
{
CaId = caId,
CaContent = "Content A1"
};
List<CascadeB> tablesB = new List<CascadeB>();
List<CascadeC> tablesC = new List<CascadeC>();
CascadeB tableB;
CascadeC tableC;
for (int i = 1; i <= 3; i++)
{
cbId = Guid.NewGuid();
tableB = new CascadeB
{
CbId = cbId,
CaId = caId,
CbContent = "Content B" + i.ToString()
};
tablesB.Add(tableB);
for (int j = 1; j <= 3; j++)
{
ccId = Guid.NewGuid();
tableC = new CascadeC
{
CcId = ccId,
CbId = cbId,
CcContent = "Content C" + i.ToString() + j.ToString()
//CcContent = sb.ToString()
};
tablesC.Add(tableC);
}
}
CascadeTableService service = new CascadeTableService();
bool result = service.AddCascadeTables(tableA, tablesB, tablesC);
if (result)
Console.WriteLine("Add Cascade Tables Successfully!");
else
Console.WriteLine("Failed to add cascade tables!");
相关文章推荐
- 如何使用LINQ to SQL插入、修改、删除数据
- Linq to SQL如何使用Visual Studio 2012创建DBML文件并连接到数据库表
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据[转]
- 如何在 ASP.NET项目里面正确使用Linq to Sql(转)
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- LinqToSql中使用事务(2)
- 如何在项目中应用LinqToSql数据库事务
- [代码]如何使用为顺序结果形状映射的存储过程(LINQ to SQL)
- 艾伟:如何在ASP.NET项目里面正确使用Linq to Sql
- 如何在ASP.NET项目里面正确使用Linq to Sql
- [代码]如何使用用户定义的标量值函数(LINQ to SQL)
- [代码]如何使用用户定义的表值函数(LINQ to SQL)
- LINQ : 在LINQ TO SQL中使用事务和控制并发
- Linq to SQL之使用事务
- Linq to SQL之使用事务
- 在使用Linq to SQL并序列化一个数据对象的时候报System.InvalidOperationException异常,序列化类型XXX的对象时检测到循环引用。
- LINQ : 在LINQ TO SQL中使用事务和控制并发