PetaPoco4.0.3 事务不会回滚
using (var srop=DbHelper.CurrentDb.GetTransaction())
{
ID = bp.AddModel(model).ToStr();
#region 参与楼盘信息
if (ID.ToInt32() > 0)
{
FY_ActivityProjectServer dtlServer = new FY_ActivityProjectServer();
for (int i = 0; i <= this.Projects.Items.Count; i++)
{
if (this.Projects.Items[i].Selected)
{
FY_ActivityProject dtl = new FY_ActivityProject();
dtl.ActivityID = ID.ToInt32();
dtl.ProjectID = this.Projects.Items[i].Value.ToInt32();
dtl.IsDel = false;
dtlList.Add(dtl);
}
}
dtlServer.AddModel(dtlList);
}
#endregion
srop.Complete();
}
以上是第一种写法
下面是第二种写法:
DbHelper.CurrentDb.BeginTransaction();//事务开始
this.ModelDataCollect();
FY_ActivityServer bp = new FY_ActivityServer();
try
{
ID = bp.AddModel(model).ToStr();
#region 参与楼盘信息
if (ID.ToInt32() > 0)
{
FY_ActivityProjectServer dtlServer = new FY_ActivityProjectServer();
for (int i = 0; i <= this.Projects.Items.Count; i++)
{
if (this.Projects.Items[i].Selected)
{
FY_ActivityProject dtl = new FY_ActivityProject();
dtl.ActivityID = ID.ToInt32();
dtl.ProjectID = this.Projects.Items[i].Value.ToInt32();
dtl.IsDel = false;
dtlList.Add(dtl);
}
}
dtlServer.AddModel(dtlList);
}
#endregion
DbHelper.CurrentDb.CompleteTransaction();
}
catch (Exception)
{
DbHelper.CurrentDb.AbortTransaction();
}
以上操作有两个insert操作
第一个insert能插入成功,第二个insert方法故意让它报错,
问题来了,
PetaPoco 不会回滚,导致第一个操作插入成功,第二个操作插入失败
求解决方案
相关推荐
PetaPoco参考手册
PetaPoco参考手册. PetaPoco是一款适用于.Net 和Mono的微小、快速、单文件的微型ORM。它的资料在网上比较少,这是其中之一。
使用PetaPoco ORM管理SQLServer,SQLIte,MySQL和ProgreSQL数据库
简单的WPF应用程序,显示了如何使用PetaPoco库来管理SQL数据库
PetaPoco:官方的PetaPoco,对于您的POCO来说,是一个很小的ORM样的东西
欢迎来到官方的PetaPoco仓库 最初是( 的创意。 PetaPoco目前由Wade Baglin(@pleb)和Aaron Sherber(@asherber)进行维护和扩展。 版本6-Netstandard 2.0 +,4.0、4.5 + 阅读有关更多信息 可从以下网站获得 : NuGet 掌握 发展 努吉特 文献资料 有关配置,代码示例和其他常规信息, 附加组件 使您可以使用功能强大的查询生成器为PetaPoco。 提供了在查询中使用一些简单的,强类型的,智能感知的LINQ表达式的功能。 允许您从数据库中生成Pocos(T4模板替换)。 第5版-旧版 Nuget(单个文件) Nuget Core(+ t4模板) Nuget Core已编译(dll) PetaPoco是用于.NET的微型且快速的微型ORM 与一样,它之所以快是因为它使用动态方法生成(MSIL)来将列值
PetaPoco:适用于.NET的微型ORM
PetaPoco不需要引用dll,只需要添加一个cs文件到项目。运行效率据称也较高,比较接近原生SQL操作。 db.Query<article>("SELECT * FROM articles"); //直接SQL语句 db.Page<article>(1, 20, "SELECT * FROM articles WHERE category=@0 ORDER BY date_posted DESC", "coolstuff"); //分页 // Insert a record var a=new article(); a.title="My new article"; a.content="PetaPoco was here"; a.date_created=DateTime.UtcNow; db.Insert(a); // Update it a.content="Blah blah"; db.Update(a); // Delete it db.Delete(a); using (var scope=db.Transaction) { //事务代码 scope.Complete(); } //条件检索画面: var id=123; var sql=PetaPoco.Sql.Builder .Append("SELECT * FROM articles") .Append("WHERE article_id=@0", id); if (start_date.HasValue) sql.Append("AND date_created>=@0", start_date.Value); if (end_date.HasValue) sql.Append("AND date_created<=@0", end_date.Value); var a=db.Query<article>(sql)
BootstrapAdmin后台管理框架 v3.0
为您提供BootstrapAdmin后台管理框架下载,BootstrapAdmin是使用.NET Core + Bootstrap + PetaPoco + HTML 5 + jQuery构建的后台管理平台。可以用于所有的Web应用程序,目前版本已经升级到NET CORE具备跨平台能力。数据库方面同时支持多种数据库,详细列表见后面数据库的详细列表,切换数据源仅需更改配置文件无需重启应用程序,配置简单灵活。UI前端使用流行的Bootstrap框架布局对


