#region License
/*
* Copyright 2002-2005 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
#region Imports
using System;
using System.Reflection;
#endregion
namespace Spring.Data.Common{
/// <summary>
/// Provides minimal database metadata information to support the
/// functionality in Spring.NET ADO.NET Framework.
/// </summary>
///
/// <author>Mark Pollack (.NET)</author>
public interface IDbMetadata
{
/// <summary>
/// Gets a descriptive name of the product.
/// </summary>
/// <example>Example: Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0</example>
/// <value>The name of the product.</value>
string ProductName { get; }
/// <summary>
/// Gets the type of the connection. The fully qualified type name is given since some providers,
/// notably for SqlServerCe, do not use the same namespace for all data access types.
/// </summary>
/// <example>Example: System.Data.SqlClient.SqlCommand, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</example>
/// <value>The type of the connection.</value>
Type ConnectionType { get; }
/// <summary>
/// Gets the type of the command.
/// </summary>
/// <example>Example: System.Data.SqlClient.SqlCommand, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</example>
/// <value>The type of the command.</value>
Type CommandType { get; }
/// <summary>
/// Gets the type of the parameter.
/// </summary>
/// <example>Example: System.Data.SqlClient.SqlParameter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</example>
/// <value>The type of the parameter.</value>
Type ParameterType { get; }
/// <summary>
/// Gets the type of the data adapter.
/// </summary>
/// <example>Example: System.Data.SqlClient.SqlDataAdapter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</example>
/// <value>The type of the data adapter.</value>
Type DataAdapterType { get; }
/// <summary>
/// Gets the type of the command builder.
/// </summary>
/// <example>Example: System.Data.SqlClient.SqlCommandBuilder, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</example>
/// <value>The type of the command builder.</value>
Type CommandBuilderType { get; }
/// <summary>
/// Gets the type of the exception.
/// </summary>
/// <example>Example: System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</example>
/// <value>The type of the exception.</value>
Type ExceptionType { get; }
/// <summary>
/// Gets the error code exception expression.
/// </summary>
/// <example>Example Errors[0].Number.ToString() for Sql Server </example>
/// <value>The error code exception expression.</value>
string ErrorCodeExceptionExpression { get; }
/// <summary>
/// Gets the command builder derive parameters method.
/// </summary>
/// <remarks>If the value 'not supported' is specified then this method will throw an ArgumentException</remarks>
/// <example>Example: DeriveParameters</example>
/// <value>The command builder derive parameters method.</value>
MethodInfo CommandBuilderDeriveParametersMethod { get; }
/// <summary>
/// Provide the prefix used to indentify named parameters in SQL text.
/// </summary>
/// <example>@ for Sql Server</example>
string ParameterNamePrefix { get; }
/// <summary>
/// Does the driver require the use of the parameter prefix when
/// specifying the name of the parameter in the Command's
/// Parameter collection.
/// </summary>
/// <remarks>If true, then commamd.Parameters["@parameterName"] is
/// used, otherwise, command.Parameters["parameterName"].
/// </remarks>
bool UseParameterNamePrefixInParameterCollection { get; }
/// <summary>
/// Gets a value indicating whether the Provider requires
/// the use of a named prefix in the SQL string.
/// </summary>
/// <remarks>
/// The OLE DB/ODBC .NET Provider does not support named parameters for
/// passing parameters to an SQL Statement or a stored procedure called
/// by an IDbCommand when CommandType is set to Text.
/// </remarks>
/// <value>
/// <c>true</c> if use parameter prefix in SQL; otherwise, <c>false</c>.
/// </value>
bool UseParameterPrefixInSql { get; }
/// <summary>
/// For providers that allow you to choose between binding parameters
/// to a command by name (true) or by position (false).
/// </summary>
bool BindByName {
get;
//TODO will go away when make all of this fully configuration driven.
set;
}
/// <summary>
/// Gets the type of the parameter db.
/// </summary>
/// <example>Example: System.Data.SqlDbType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</example>
/// <value>The type of the parameter db.</value>
Type ParameterDbType { get; }
/// <summary>
/// Gets the parameter db type property.
/// </summary>
/// <example>Example: SqlDbType for SqlServer</example>
/// <value>The parameter db type property.</value>
PropertyInfo ParameterDbTypeProperty { get; }
/// <summary>
/// Gets the parameter is nullable property.
/// </summary>
/// <example>Example: IsNullable for Sql Server</example>
/// <value>The parameter is nullable property.</value>
PropertyInfo ParameterIsNullableProperty { get; }
/// <summary>
/// Gets or sets the error codes.
/// </summary>
/// <remarks>The collection of error codes to map error code integer values to Spring's DAO exception hierarchy</remarks>
/// <value>The error codes.</value>
ErrorCodes ErrorCodes { get; }
}
}
|