Prepare

BLToolkit.NET

Business Logic Toolkit for .NET www.bltoolkit.net
 

The Prepare method can be useful if you need to execute the same command multiple times.

Prepare.cs
using System;
using System.Collections.Generic;

using NUnit.Framework;

using BLToolkit.Data;

namespace HowTo.Data
{
    using DataAccess;

    [TestFixture]
    public class Prepare
    {
        [Test]
        public void Test()
        {
            List<Person> list = new List<Person>
            {
                new Person { FirstName = "John", LastName = "Smith", Gender = Gender.Male   },
                new Person { FirstName = "Jane", LastName = "Smith", Gender = Gender.Female }
            };

            using (DbManager db = new DbManager())
            {
                db.BeginTransaction();

                // Prepare command.
                //
                db
                    .SetSpCommand("Person_Insert",
                        db.CreateParameters(list[0]))
                    .Prepare();

                // Insert.
                //
                foreach (Person person in list)
                {
                    db.AssignParameterValues(person);
                    db.ExecuteNonQuery();
                }

                // Check the result.
                //
                list = db
                    .SetCommand(
                        "SELECT * FROM Person WHERE LastName = @lastName",
                        db.Parameter("@lastName", "Smith"))
                    .ExecuteList<Person>();

                Assert.GreaterOrEqual(2, list.Count);

                // Cleanup.
                //
                db
                    .SetCommand(
                        "DELETE FROM Person WHERE LastName = @lastName",
                        db.Parameter("@lastName", "Smith"))
                    .ExecuteNonQuery();

                db.CommitTransaction();
            }
        }
    }
}
Person.cs
using System;

using BLToolkit.DataAccess;
using BLToolkit.Mapping;

namespace HowTo.DataAccess
{
    public class Person
    {
        [MapField("PersonID"), PrimaryKey, NonUpdatable]
        public int    ID;

        public string LastName;
        public string FirstName;
        public string MiddleName;
        public Gender Gender;
    }
}
Gender.cs
using System;

using BLToolkit.Mapping;

namespace HowTo.DataAccess
{
    public enum Gender
    {
        [MapValue("F")] Female,
        [MapValue("M")] Male,
        [MapValue("U")] Unknown,
        [MapValue("O")] Other
    }
}
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add
            key   = "ConnectionString"
            value = "Server=.;Database=BLToolkitData;Integrated Security=SSPI"/>
    </appSettings>
</configuration>
Create.sql script
 
© 2010 www.bltoolkit.net
[email protected]