/// <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)); }
/// <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)); }
/// <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)); }
/// <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))); }
/// <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); }