asp.net mysql 事务_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 GetAll()

{

using (IDbConnection dbConnection = Connection)

{

dbConnection.Open();

return dbConnection.Query("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(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();

}

}

参考资料:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值