Пример #1
0
        /// <summary>
        ///     Creates the table valued parameter.
        /// </summary>
        /// <param name="command">The command.</param>
        /// <param name="type">The type.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">command</exception>
        /// <exception cref="System.ArgumentException">@Invalid table valued parameter type;type</exception>
        public static DataTable CreateTableValuedParameter(this IDbCommand command, TableValuedParameterType type)
        {
            if (command == null)
            {
                throw new ArgumentNullException(nameof(command));
            }

            return(Create(type));
        }
Пример #2
0
        /// <summary>
        /// Adds a parameter to a command that can accept a list of some arbitrary object type.
        /// </summary>
        /// <param name="command">The command object to update.</param>
        /// <param name="name">A string containing the name of the parameter.</param>
        /// <param name="dataType">The type of data.</param>
        /// <param name="dataList">The data list.</param>
        /// <returns></returns>
        public static IDbDataParameter AddListParameter(this IDbCommand command, string name, DataType dataType, IEnumerable <object> dataList)
        {
            TableValuedParameterType paramType = DataTypeHelper.ToSingleTableValuedParameterType(dataType);

            return(AddListParameter(command, name, paramType, dataList));
        }
Пример #3
0
        /// <summary>
        /// Adds a parameter to a command that can accept a list of some arbitrary object type.
        /// </summary>
        /// <param name="command">The command object to update.</param>
        /// <param name="name">A string containing the name of the parameter.</param>
        /// <param name="listType">The type of data.</param>
        /// <param name="dataList">The data list.</param>
        /// <returns></returns>
        public static IDbDataParameter AddListParameter(this IDbCommand command, string name, TableValuedParameterType listType, IEnumerable <object> dataList)
        {
            /////
            // Define data table
            /////
            DataTable dataTable = command.CreateTableValuedParameter(listType);

            /////
            // Fill table
            /////
            foreach (object value in dataList)
            {
                dataTable.Rows.Add(value);
            }

            return(command.AddTableValuedParameter(name, dataTable));
        }
Пример #4
0
 /// <summary>
 ///     Gets the deletions.
 /// </summary>
 /// <param name="tableName">Name of the table.</param>
 /// <param name="tvpType">Type of the TVP.</param>
 /// <returns></returns>
 public DataTable GetDeletions(string tableName, TableValuedParameterType tvpType)
 {
     return(Get(tableName, Deletions, name => TableValuedParameter.Create(tvpType)));
 }
Пример #5
0
        /// <summary>
        ///     Creates the table valued parameter.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentException">@Invalid table valued parameter type;type</exception>
        public static DataTable Create(TableValuedParameterType type)
        {
            var dt = new DataTable( );

            switch (type)
            {
            case TableValuedParameterType.BigInt:
                dt.AddColumn <long>("Id")
                .SetType("dbo.UniqueIdListType");
                break;

            case TableValuedParameterType.Guid:
                dt.AddColumn <Guid>("Id")
                .SetType("dbo.UniqueGuidListType");
                break;

            case TableValuedParameterType.GuidList:
                dt.AddColumn <Guid>("Id")
                .SetType("dbo.GuidListType");
                break;

            case TableValuedParameterType.Int:
                dt.AddColumn <int>("Data")
                .SetType("dbo.IntListType");
                break;

            case TableValuedParameterType.Decimal:
                dt.AddColumn <decimal>("Data")
                .SetType("dbo.DecimalListType");
                break;

            case TableValuedParameterType.DateTime:
                dt.AddColumn <DateTime>("Data")
                .SetType("dbo.DateTimeListType");
                break;

            case TableValuedParameterType.DataAlias:
                dt.AddDefaultDataColumns( )
                .AddDataColumn <string>( )
                .AddColumn <string>("Namespace")
                .AddColumn <int>("AliasMarkerId")
                .SetType("dbo.Data_AliasType");
                break;

            case TableValuedParameterType.DataBit:
                dt.AddDefaultDataColumns( )
                .AddDataColumn <bool>( )
                .SetType("dbo.Data_BitType");
                break;

            case TableValuedParameterType.DataDateTime:
                dt.AddDefaultDataColumns( )
                .AddDataColumn <DateTime>( )
                .SetType("dbo.Data_DateTimeType");
                break;

            case TableValuedParameterType.DataDecimal:
                dt.AddDefaultDataColumns( )
                .AddDataColumn <decimal>( )
                .SetType("dbo.Data_DecimalType");
                break;

            case TableValuedParameterType.DataGuid:
                dt.AddDefaultDataColumns( )
                .AddDataColumn <Guid>( )
                .SetType("dbo.Data_GuidType");
                break;

            case TableValuedParameterType.DataInt:
                dt.AddDefaultDataColumns( )
                .AddDataColumn <int>( )
                .SetType("dbo.Data_IntType");
                break;

            case TableValuedParameterType.DataNVarChar:
                dt.AddDefaultDataColumns( )
                .AddDataColumn <string>( )
                .SetType("dbo.Data_NVarCharType");
                break;

            case TableValuedParameterType.DataXml:
                dt.AddDefaultDataColumns( )
                .AddDataColumn <string>( )
                .SetType("dbo.Data_XmlType");
                break;

            case TableValuedParameterType.Relationship:
                dt.AddDefaultRelationshipColumns( )
                .AddFromIdColumn( )
                .AddToIdColumn( )
                .SetType("dbo.RelationshipType");
                break;

            case TableValuedParameterType.EntityBatch:
                dt.AddColumn <long>("BatchId")
                .AddColumn <long>("EntityId")
                .SetType("dbo.EntityBatchType");
                break;

            case TableValuedParameterType.EntityClone:
                dt.AddColumn <long>("SourceId")
                .AddColumn <long>("DestinationId")
                .AddColumn <int>("CloneOption")
                .SetType("dbo.EntityCloneType");
                break;

            case TableValuedParameterType.EntityMap:
                dt.AddColumn <long>("SourceId")
                .AddColumn <long>("DestinationId")
                .SetType("dbo.EntityMapType");
                break;

            case TableValuedParameterType.InputEntityType:
                dt.AddColumn <long>("Id")
                .AddColumn <long>("TypeId")
                .AddColumn <int>("IsClone")
                .SetType("dbo.InputEntityType");
                break;

            case TableValuedParameterType.LookupFieldKey:
                dt.AddDefaultDataColumns( )
                .SetType("dbo.FieldKeyType");
                break;

            case TableValuedParameterType.LookupAliasData:
                dt.AddColumn <long>("TenantId")
                .AddColumn <string>("Namespace")
                .AddColumn <string>("Data")
                .SetType("dbo.AliasLookupType");
                break;

            case TableValuedParameterType.LookupRelationshipForward:
                dt.AddDefaultRelationshipColumns( )
                .AddFromIdColumn( )
                .SetType("dbo.ForwardRelationshipType");
                break;

            case TableValuedParameterType.LookupRelationshipReverse:
                dt.AddDefaultRelationshipColumns( )
                .AddToIdColumn( )
                .SetType("dbo.ReverseRelationshipType");
                break;

            case TableValuedParameterType.BulkFldType:
                dt.AddColumn <int>("NodeTag")
                .AddColumn <int>("FieldId")
                .SetType("dbo.BulkFldType");
                break;

            case TableValuedParameterType.BulkRelType:
                dt.AddColumn <int>("NodeTag")
                .AddColumn <long>("RelTypeId")
                .AddColumn <int>("NextTag")
                .SetType("dbo.BulkRelType");
                break;

            case TableValuedParameterType.NVarCharMaxListType:
                dt.AddColumn <string>("Data")
                .SetType("dbo.NVarCharMaxListType");
                break;

            default:
                throw new ArgumentException(@"Invalid table valued parameter type", nameof(type));
            }

            return(dt);
        }