前一章讲了如何利用MySoft.Data进行数据的插入,利用DbSession可以实现各种数据增、删、改、查等各种复杂的处理,本章着重讲解一下数据的更新:

    数据更新在日常开发中占据中非常重要的地位,尽次于查询。下面就讲解一下如何利用DbSession来进行数据的更新。

    继续引用前面的DbSession配置,如下:

/// <summary>
    /// 数据库访问类
    /// </summary>
    public static class DataAccess
    {
        /// <summary>
        /// 通过配置节来实例化DbSession
        /// </summary>
        public static readonly DbSession DefaultSession = new DbSession("DataExample");

        /// <summary>
        /// 通过自定义类来实例化DbSession
        /// </summary>
        public static readonly DataExample ExampleSession = new DataExample();

    }

    /// <summary>
    /// DataExample会话类
    /// </summary>
    public class DataExample : DbSession
    {
        public DataExample()
            : base("DataExample")
        {
#if DEBUG
            this.RegisterSqlLogger(log =>
                {
                    System.IO.File.WriteAllText("c:\\log.txt", log);
                });
#endif
        }
    }

 

下面还是利用DataAccess.ExampleSession来进行操作:

 

一、强类型的数据更新

 

下面的操作以Products实体为例进行操作:

1、单个实体数据更新

//实例化一个Products对象
            Products product = new Products()
            {
                ProductID = 1,
                ProductName = "测试产品1"
            };

            //更新单个对象
            product.Attach();
            DataAccess.ExampleSession.Save(product);

2、批量实体数据更新

//实例化一组Products对象
            List<Products> list = new List<Products>();
            for (int index = 0; index < 10; index++)
            {
                list.Add(new Products()
                {
                    ProductID = index,
                    ProductName = "测试产品" + index
                });
            }

            //批量更新数据
            DbBatch batch = DataAccess.ExampleSession.BeginBatch(10);
            list.ForEach(item =>
            {
                item.Attach();
                batch.Save(item);
            });

            batch.Process();

3、带事务单个实体更新(MySoft.Data内置实现DbTrans)

//实例化一个Products对象 Products product = new Products() { ProductID = 1, ProductName = "测试产品1" }; //使用事务进行数据插入 using (DbTrans trans = DataAccess.ExampleSession.BeginTrans()) { try { product.Attach(); trans.Save(product); trans.Commit(); } catch { trans.Rollback(); } }

相关文章: