using System;
using NUnit.Framework;
using BLToolkit.Data;
using BLToolkit.DataAccess;
using BLToolkit.Mapping;
namespace HowTo.DataAccess
{
[TestFixture]
public class Transaction
{
public abstract class TestAccessor : DataAccessor<Person>
{
public abstract int Insert(Person person);
public abstract void Delete(int @PersonID);
public abstract Person SelectByKey(int id);
public abstract Person SelectByKey(DbManager db, int id);
}
// DataAccessor takes DbManager as a parameter.
//
[Test]
public void Test1()
{
using (DbManager db = new DbManager())
{
TestAccessor ta = DataAccessor.CreateInstance<TestAccessor>(db);
ta.BeginTransaction();
int id = ta.Insert(new Person { FirstName = "John", LastName = "Smith" });
Assert.AreNotEqual(0, id);
Person person = ta.SelectByKey(id);
Assert.IsNotNull(person);
ta.Delete(id);
ta.CommitTransaction();
}
}
// DataAccessor method takes DbManager as a parameter.
//
[Test]
public void Test2()
{
using (DbManager db = new DbManager())
{
db.BeginTransaction();
TestAccessor ta = DataAccessor.CreateInstance<TestAccessor>();
int id = ta.Insert(new Person { FirstName = "John", LastName = "Smith" });
Assert.AreNotEqual(0, id);
Person person = ta.SelectByKey(db, id);
Assert.IsNotNull(person);
ta.Delete(id);
db.CommitTransaction();
}
}
}
} |