ELinq 执行事务

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NLite.Data;
namespace LastestELinq
{
    class Program
    {
        static DbConfiguration cfg = DbConfiguration
                   .Configure("demoX")//通过connectionStringName对象创建DbConfiguration对象(可以用于配置文件中有多个数据库连接字符串配置)
                   .SetSqlLogger(() => new SqlLog(Console.Out))
                   .AddClass<Customer>()//注册实体到数据表的映射关系
                   ;
        //static void Step1()
        //{
        //    using (var context = cfg.CreateDbContext())
        //    {
        //        var query = context.Set<Customer>();
        //        foreach (var item in query)
        //        {
        //            Console.WriteLine("CustomerID: {0}\t, ContactName: {1}", item.CustomerID, item.ContactName);
        //        }
        //    }
        //    Console.WriteLine("----------------------------------------");
        //}
        //static void Step2()
        //{
        //    using (var context = cfg.CreateDbContext())
        //    {
        //        context.Set<Customer>().Update(new { ContactName = DateTime.Now.ToString(), CustomerID = 2 });
        //    }
        //    Console.WriteLine("----------------------------------------");
        //}
        //static void Step3()
        //{
        //    using (var context = cfg.CreateDbContext())
        //    {
        //        context.Set<Customer>().Update(new { XX = "姓名" }, _ => _.CustomerID == 4);
        //    }
        //    Console.WriteLine("----------------------------------------");
        //}
        static void Step1(IDbContext context)
        {
            var query = context.Set<Customer>().ToList<Customer>();
            foreach (var item in query)
            {
                Console.WriteLine("CustomerID: {0}\t, ContactName: {1}", item.CustomerID, item.ContactName);
            }
            Console.WriteLine("--------------------------------------------------------------");
        }
        static void Step2(IDbContext context)
        {
            int count = context.Set<Customer>().Update(new { ContactName = DateTime.Now.ToString(), CustomerID = 2 });
            Console.WriteLine("操作结果: {0}", count);
        }
        static void Step3(IDbContext context)
        {
            int count = context.Set<Customer>().Update(new { ContactName = "姓名" }, _ => _.CustomerID == 34);
            Console.WriteLine("操作结果: {0}", count);
        }
        static void Main(string[] args)
        {
            //Action action = () =>
            //{
            //    Step1();
            //    Step2();
            //    Step3();
            //};
                     
            using (var ctx = cfg.CreateDbContext())
            {
                ctx.Connection.Open();
                ctx.Connection.BeginTransaction();
                Action action = () =>
                {
                    Step1(ctx);
                    Step2(ctx);
                    Step3(ctx);
                };
                ctx.UsingTransaction(action);
                //ctx.Connection.Open();
                //var trans = ctx.Connection.BeginTransaction();
                //try
                //{
                //    ctx.Set<Customer>().Update(new { ContactName = DateTime.Now.ToString(), CustomerID = 2 });
                //    ctx.Set<Customer>().Update(new { XX = "姓名" }, _ => _.CustomerID == 4);
                //    trans.Commit();
                //}
                //catch (Exception ex)
                //{
                //    trans.Rollback();
                //    Console.WriteLine(ex.Message);
                //}
                //finally
                //{
                //    Step1();
                //}
            }
            Console.WriteLine("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
            using (var ctx = cfg.CreateDbContext())
            {
                Step1(ctx);
            }
            //Step1();
            Console.ReadKey(true);
        }
    }
}

点击查看原图

知识共享许可协议
《ELinq 执行事务》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

3 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     160.70ms