A summary of Filip Ekberg’s blog in 2011

Let’s get to it, here’s a link summary to all Filip Ekbery‘s posts in 2011

Dynamic programming

Software Architecture

Compiler as a Service

Screencasts

Other

Transaction for OracleConnection in .Net

1. 单个数据库连接

可以直接使用OracleTransaction对象做事务处理

using(var transaction = connection.BeginTransaction())
{
.....在这个作用域上的数据库操作,必须基于这个transaction
using(var command = new OracleCommand(commandText, connection) { Transaction = transaction })
{
...
}
...
transaction.Commit(); //transaction.Rollback();
}

2. 多个数据库连接

可以使用TransactionScope对象来维护多个数据库连接中的事务处理

var options = new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted, Timeout = new TimeSpan(0, 2, 0) };

using (var transaction = new TransactionScope(TransactionScopeOption.Required, options))
{
.....在这个作用域里面的数据库操作,不需要传递transaction对象
using(var connection1 = new OracleConnection(connectionString1))
{
...
}

using(var connection2 = new OracleConnection(connectionString2))
{
...
}

transaction.Complete();
}

注1: 使用TransactionScope对象前,需要添加引用System.Transaction

注2: 对于多个Oracle连接来说,使用TransactionScope对象前,需要安装Oracle Services For MTS (Microsoft Transaction Server)。下载地址:http://goo.gl/XrKn

在Repeater中添加换页符

1
2
3
4
5
6
7
protected void ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if ((e.Item.ItemType.Equals(ListItemType.Item) || e.Item.ItemType.Equals(ListItemType.AlternatingItem)) && (e.Item.ItemIndex + 1) % ProductsPerPage == 0)
{
e.Item.Controls.Add(new LiteralControl("<tr><td class=\"PageBreak\" ></td></tr>"));
}
}

来源: http://weblogs.asp.net/dennisthemenace/archive/2008/01/25/insertion-of-a-page-break-in-a-repeater.aspx