Сообщений 0 Оценка 9 Оценить |
Класс BLToolkit.DataAccess.DataAccessor позволяет генерировать SQL для стандартных CRUDL операций. Следующий пример демонстрирует применений методов InsertSql, UpdateSql, DeleteSql, SelectByKeySql, SelectAllSql.
using System; using System.Collections.Generic; using NUnit.Framework; using BLToolkit.DataAccess; using BLToolkit.Mapping; using BLToolkit.Reflection; using BLToolkit.Data; namespace HowTo.DataAccess { [TestFixture] public class CRUDLSqlText { public enum Gender { [MapValue("F")] Female, [MapValue("M")] Male, [MapValue("U")] Unknown, [MapValue("O")] Other } public class Person { [MapField("PersonID"), PrimaryKey, NonUpdatable] public int ID; public string LastName; public string FirstName; public string MiddleName; public Gender Gender; } [Test] public void InsertTest() { DataAccessor da = new DataAccessor(); Person person = new Person(); person.FirstName = "Crazy"; person.LastName = "Frog"; person.Gender = Gender.Unknown; da.InsertSql(person); } [Test] public void UpdateTest() { using (DbManager db = new DbManager()) { // Get object. // Person person = db .SetSpCommand("Person_SelectByName", "Crazy", "Frog") .ExecuteObject<Person>(); TypeAccessor.WriteConsole(person); Assert.IsNotNull(person); DataAccessor da = new DataAccessor(); // Update. // person.Gender = Gender.Other; da.UpdateSql(db, person); person = da.SelectByKeySql<Person>(db, person.ID); TypeAccessor.WriteConsole(person); Assert.AreEqual(Gender.Other, person.Gender); // Delete. // da.DeleteSql(db, person); person = da.SelectByKeySql<Person>(db, person.ID); Assert.IsNull(person); // Get All. // List<Person> list = da.SelectAllSql<Person>(db); foreach (Person p in list) TypeAccessor.WriteConsole(p); } } } } |
SQL скрипт для создания базы данных:
--CREATE DATABASE BLToolkitData ON PRIMARY --( NAME = N'BLToolkitTest', FILENAME = N'C:\Data\MSSQL.1\MSSQL\DATA\BLToolkitData.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) --LOG ON --( NAME = N'BLToolkitTest_log', FILENAME = N'C:\Data\MSSQL.1\MSSQL\DATA\BLToolkitData_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10% ) --GO -- Person Table IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID('Person') AND type in (N'U')) BEGIN DROP TABLE Person END CREATE TABLE Person ( PersonID int NOT NULL IDENTITY(1,1) CONSTRAINT PK_Person PRIMARY KEY CLUSTERED, FirstName nvarchar(50) NOT NULL, LastName nvarchar(50) NOT NULL, MiddleName nvarchar(50) NULL, Gender char(1) NOT NULL CONSTRAINT CK_Person_Gender CHECK (Gender in ('M', 'F', 'U', 'O')) ) ON [PRIMARY] GO INSERT INTO Person (FirstName, LastName, Gender) VALUES ('John', 'Pupkin', 'M') GO -- Person_SelectByName IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'Person_SelectByName') BEGIN DROP Procedure Person_SelectByName END GO CREATE Procedure Person_SelectByName @firstName nvarchar(50), @lastName nvarchar(50) AS SELECT * FROM Person WHERE FirstName = @firstName AND LastName = @lastName GO GRANT EXEC ON Person_SelectByName TO PUBLIC GO |
App.config:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key = "ConnectionString" value = "Server=.;Database=BLToolkitData;Integrated Security=SSPI"/> </appSettings> </configuration> |
Сообщений 0 Оценка 9 Оценить |