Skip to content

DataAccess.DiscoverParameters

Igor Tkachev edited this page May 22, 2016 · 1 revision

Home / DataAccess

By default, BLToolkit expects method parameter names to match stored procedure parameter names. The sequential order of parameters is not important in this case. The DiscoverParameters attribute enforces BLToolkit to retrieve parameter information from the sproc and to assign method parameters in the order they go. Parameter names are ignored.

DiscoverParameters.cs

using NUnit.Framework;
using BLToolkit.DataAccess;

namespace HowTo.DataAccess
{
    [TestFixture]
    public class DiscoverParameters
    {
        public abstract class PersonAccessor : DataAccessor
        {
            [DiscoverParameters]
            public abstract Person SelectByName(string anyParameterName, string otherParameterName);
        }

        [Test]
        public void Test()
        {
            PersonAccessor pa = DataAccessor.CreateInstance<PersonAccessor>();
            Person         p  = pa.SelectByName("Tester", "Testerson");

            Assert.AreEqual(2, p.ID);
        }
    }
}

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>

CreateSql

Clone this wiki locally