/ * Copyright ( C ) 2008 - 2011 Jordan Marr
This library is free software ; you can redistribute it and / or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation ; either
version 3 of the License , or ( at your option ) any later version .
This library is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
Lesser General Public License for more details .
You should have received a copy of the GNU Lesser General Public
License along with this library . If not , see < http : //www.gnu.org/licenses/>. */
using System ;
using System.Data ;
namespace Marr.Data.Mapping
{
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
public class ColumnAttribute : Attribute , IColumnInfo
{
private string _name ;
private string _altName ;
private int _size = 0 ;
private bool _isPrimaryKey ;
private bool _isAutoIncrement ;
private bool _returnValue ;
private ParameterDirection _paramDirection = ParameterDirection . Input ;
public ColumnAttribute ( )
{
}
public ColumnAttribute ( string name )
{
_name = name ;
}
/// <summary>
/// Gets or sets the column name.
/// </summary>
public string Name
{
get { return _name ; }
set { _name = value ; }
}
/// <summary>
/// Gets or sets an alternate name that is used to define this column in views.
/// If an AltName is present, it is used in the QueryViewToObjectGraph method.
/// If an AltName is not present, it will return the Name property value.
/// </summary>
public string AltName
{
get { return _altName ; }
set { _altName = value ; }
}
/// <summary>
/// Gets or sets the column size.
/// </summary>
public int Size
{
get { return _size ; }
set { _size = value ; }
}
/// <summary>
/// Gets or sets a value that determines whether the column is the Primary Key.
/// </summary>
public bool IsPrimaryKey
{
get { return _isPrimaryKey ; }
set { _isPrimaryKey = value ; }
}
/// <summary>
/// Gets or sets a value that determines whether the column is an auto-incrementing seed column.
/// </summary>
public bool IsAutoIncrement
{
get { return _isAutoIncrement ; }
set { _isAutoIncrement = value ; }
}
/// <summary>
/// Gets or sets a value that determines whether the column has a return value.
/// </summary>
public bool ReturnValue
{
get { return _returnValue ; }
set { _returnValue = value ; }
}
/// <summary>
/// Gets or sets the ParameterDirection.
/// </summary>
public ParameterDirection ParamDirection
{
get { return _paramDirection ; }
set { _paramDirection = value ; }
}
public string TryGetAltName ( )
{
if ( ! string . IsNullOrEmpty ( AltName ) & & AltName ! = Name )
{
return AltName ;
}
return Name ;
}
}
}