-
Notifications
You must be signed in to change notification settings - Fork 113
DataAccess.UpdateSql
Igor Tkachev edited this page May 22, 2016
·
1 revision
UpdateSql.cs
using System;
using NUnit.Framework;
using BLToolkit.Data;
using BLToolkit.DataAccess;
using BLToolkit.Mapping;
namespace HowTo.DataAccess
{
[TestFixture]
public class UpdateSql
{
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()
{
SqlQuery<Person> query = new SqlQuery<Person>();
Person person = query.SelectByKey(_id);
person.Gender = Gender.Other;
query.Update(person);
}
[Test]
public void Test2()
{
using (DbManager db = new DbManager())
{
SqlQuery<Person> query = new SqlQuery<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.UpdateSql method generates and executes the following SQL statement:
UPDATE
[Person]
SET
[MiddleName] = @MiddleName,
[Gender] = @Gender,
[LastName] = @LastName,
[FirstName] = @FirstName
WHERE
[PersonID] = @PersonID
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>
<connectionStrings>
<add
name = "DemoConnection"
connectionString = "Server=.;Database=BLToolkitData;Integrated Security=SSPI"
providerName = "System.Data.SqlClient" />
</connectionStrings>
</configuration>