Update

BLToolkit.NET

Business Logic Toolkit for .NET www.bltoolkit.net
  Update.cs
using System;

using NUnit.Framework;

using BLToolkit.Data;
using BLToolkit.DataAccess;
using BLToolkit.Mapping;

namespace HowTo.DataAccess
{
    [TestFixture]
    public class Update
    {
        int _id;

        [TestFixtureSetUp]
        public void Insert()
        {
            using (DbManager db = new DbManager())
            {
                _id = db
                    .SetCommand(@"
                        INSERT INTO Person (
                             FirstName,  LastName,  Gender
                        ) VALUES (
                            @FirstName, @LastName, @Gender
                        )
                        SELECT Cast(SCOPE_IDENTITY() as int)",
                        db.Parameter("@FirstName", "Crazy"),
                        db.Parameter("@LastName",  "Frog"),
                        db.Parameter("@Gender",    Map.EnumToValue(Gender.Unknown)))
                    .ExecuteScalar<int>();
            }
        }

        [Test]
        public void Test1()
        {
            SprocQuery<Person> query = new SprocQuery<Person>();

            Person person = query.SelectByKey(_id);

            person.Gender = Gender.Other;

            query.Update(person);
        }

        [Test]
        public void Test2()
        {
            using (DbManager db = new DbManager())
            {
                SprocQuery<Person> query = new SprocQuery<Person>();

                Person person = query.SelectByKey(db, _id);

                person.Gender = Gender.Other;

                query.Update(db, person);
            }
        }

        [TestFixtureTearDown]
        public void Delete()
        {
            using (DbManager db = new DbManager())
            {
                db
                    .SetCommand("DELETE FROM Person WHERE PersonID = @id",
                        db.Parameter("@id", _id))
                    .ExecuteNonQuery();
            }
        }
    }
}
DataAccessor.Update method generates and executes the following SQL statement:
exec Person_Update @PersonID=2, @FirstName='Crazy', @LastName='Frog', @MiddleName='', @Gender='O'
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]