view HowTo/Data/ExecuteList.cs @ 1:8f65451dc28f

Исправлена проблема с фабрикой и выборкой нескольких объектов в linq выражении
author cin
date Fri, 28 Mar 2014 01:04:56 +0400
parents f990fcb411a9
children
line wrap: on
line source

using System;
using System.Collections;
using System.Collections.Generic;

using NUnit.Framework;

using BLToolkit.Data;
using BLToolkit.Mapping;
using BLToolkit.Reflection;

namespace HowTo.Data
{
	[TestFixture]
	public class ExecuteList
	{
		[MapValue(Gender.Female,  "F")]
		[MapValue(Gender.Male,    "M")]
		[MapValue(Gender.Unknown, "U")]
		[MapValue(Gender.Other,   "O")]
		public enum Gender
		{
			Female,
			Male,
			Unknown,
			Other
		}

		[MapField("PersonID", "ID")]
		public class Person
		{
			public int    ID;

			public string LastName;
			public string FirstName;
			public string MiddleName;
			public Gender Gender;
		}

		IList<Person> GetPersonListSqlText()
		{
			using (DbManager db = new DbManager())
			{
				return db
					.SetCommand("SELECT * FROM Person")
					./*[a]*/ExecuteList<Person>()/*[/a]*/;
			}
		}

		[Test]
		public void SqlText()
		{
			IList<Person> list = GetPersonListSqlText();

			foreach (Person p in list)
				TypeAccessor.WriteDebug(p);
		}

		IList<Person> GetPersonListSproc()
		{
			using (DbManager db = new DbManager())
			{
				return db
					.SetSpCommand("Person_SelectAll")
					./*[a]*/ExecuteList<Person>()/*[/a]*/;
			}
		}

		[Test]
		public void Sproc()
		{
			IList<Person> list = GetPersonListSproc();

			foreach (Person p in list)
				TypeAccessor.WriteDebug(p);
		}

		void GetCustomPersonList(IList list)
		{
			using (DbManager db = new DbManager())
			{
				db
					.SetSpCommand("Person_SelectAll")
					./*[a]*/ExecuteList(list, typeof(Person))/*[/a]*/;
			}
		}

		[Test]
		public void CustomList()
		{
			ArrayList list = new ArrayList(10);

			GetCustomPersonList(list);

			foreach (Person p in list)
				TypeAccessor.WriteDebug(p);
		}
	}
}