• ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)


    操作 MySql 数据库使用MySql.Data程序包(MySql 开发,其他第三方可能会有些问题)。

    project.json 代码:

    {
      "version": "1.0.0-*",
      "buildOptions": {
        "emitEntryPoint": true
      },
    
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.1"
        },
        "Dapper": "1.50.2",
        "MySql.Data": "7.0.6-IR31"
      },
    
      "frameworks": {
        "netcoreapp1.0": {
          "imports": "dnxcore50"
        }
      }
    }
    

    测试数据库脚本:

    CREATE TABLE `products` (
      `ProductID` int(11) NOT NULL AUTO_INCREMENT,
      `Name` varchar(255) DEFAULT NULL,
      `Quantity` int(11) DEFAULT NULL,
      `Price` int(11) DEFAULT NULL,
      PRIMARY KEY (`ProductID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gbk;
    

    Product 代码:

    public class Product
    {
        [Key]
        public int ProductId { get; set; }
        public string Name { get; set; }
        public int Quantity { get; set; }
        public double Price { get; set; }
    }
    

    ProductRepository 代码(数据访问操作):

    public class ProductRepository
    {
        private string connectionString;
        public ProductRepository()
        {
            connectionString = @"server=localhost;database=dapperdemo;uid=root;pwd=123456;";
        }
    
        public IDbConnection Connection
        {
            get
            {
                return new MySqlConnection(connectionString);
            }
        }
    
        public void Add(Product prod)
        {
            using (IDbConnection dbConnection = Connection)
            {
                string sQuery = "INSERT INTO Products (Name, Quantity, Price)"
                                + " VALUES(@Name, @Quantity, @Price)";
                dbConnection.Open();
                dbConnection.Execute(sQuery, prod);
            }
        }
    
        public IEnumerable<Product> GetAll()
        {
            using (IDbConnection dbConnection = Connection)
            {
                dbConnection.Open();
                return dbConnection.Query<Product>("SELECT * FROM Products");
            }
        }
    
        public Product GetByID(int id)
        {
            using (IDbConnection dbConnection = Connection)
            {
                string sQuery = "SELECT * FROM Products"
                               + " WHERE ProductId = @Id";
                dbConnection.Open();
                return dbConnection.Query<Product>(sQuery, new { Id = id }).FirstOrDefault();
            }
        }
    
        public void Delete(int id)
        {
            using (IDbConnection dbConnection = Connection)
            {
                string sQuery = "DELETE FROM Products"
                             + " WHERE ProductId = @Id";
                dbConnection.Open();
                dbConnection.Execute(sQuery, new { Id = id });
            }
        }
    
        public void Update(Product prod)
        {
            using (IDbConnection dbConnection = Connection)
            {
                string sQuery = "UPDATE Products SET Name = @Name,"
                               + " Quantity = @Quantity, Price= @Price"
                               + " WHERE ProductId = @ProductId";
                dbConnection.Open();
                dbConnection.Execute(sQuery, prod);
            }
        }
    
        public void TransactionTest()
        {
            using (IDbConnection dbConnection = Connection)
            {
                string sQuery = "UPDATE Products SET Name = 'xishuai222'"
                               + " WHERE ProductId = 1";
                dbConnection.Open();
                using (var transaction = dbConnection.BeginTransaction())
                {
                    dbConnection.Execute(sQuery);
                    ///to do throw exception
                    transaction.Commit();
                }
            }
        }
    }
    

    调用代码:

    public class Program
    {
        public static void Main(string[] args)
        {
            var productRepository = new ProductRepository();
            var product = new Product() { Name = "xishuai" };
            productRepository.Add(product);
    
            var products = productRepository.GetAll();
            foreach (var item in products)
            {
                Console.WriteLine($"id: {item.ProductId}; name: {item.Name}");
            }
    
            productRepository.TransactionTest();
    
            Console.ReadKey();
        }
    }
    

    参考资料:

  • 相关阅读:
    滚动条去掉
    js 类继承extends
    html标签分类
    Freemarker模板引擎
    关于SpringMVC控制器的一点补充
    Maven的使用
    多层嵌套的json数据
    前后端数据交互之数据接口
    ES6浅谈之Promise
    ES6(阮一峰)学习总结
  • 原文地址:https://www.cnblogs.com/xishuai/p/aspnet-core1-dapper-mysql-transaction.html
Copyright © 2020-2023  润新知