﻿Module DataTableExtensions
   ''' <summary>
   ''' Create a primary key named Identifier which is auto incrementing
   ''' </summary>
   ''' <param name="sender"></param>
   ''' <remarks></remarks>
   <System.Diagnostics.DebuggerStepThrough()> _
   <System.Runtime.CompilerServices.Extension()> _
   Public Sub AddPrimaryKey(ByVal sender As DataColumnCollection)
      sender.Add(New DataColumn("Identifier", GetType(System.Int32)))
      sender.Item("Identifier").AutoIncrement = True
      sender.Item("Identifier").AllowDBNull = False
      sender.Item("Identifier").ReadOnly = True
      sender.Item("Identifier").AutoIncrementSeed = 1
   End Sub
   ''' <summary>
   ''' Create an auto incrementing primary key, seed is 1.
   ''' </summary>
   ''' <param name="sender"></param>
   ''' <param name="ColumnName">Name of auto-incrementing key</param>
   ''' <remarks></remarks>
   <System.Diagnostics.DebuggerStepThrough()> _
   <System.Runtime.CompilerServices.Extension()> _
   Public Sub AddPrimaryKey(ByVal sender As DataColumnCollection, ByVal ColumnName As String)
      sender.Add(New DataColumn(ColumnName, GetType(System.Int32)))
      sender.Item(ColumnName).AutoIncrement = True
      sender.Item(ColumnName).AllowDBNull = False
      sender.Item(ColumnName).ReadOnly = True
      sender.Item(ColumnName).AutoIncrementSeed = 1
   End Sub
   ''' <summary>
   ''' Create an auto incrementing primary key, seed is user defined
   ''' </summary>
   ''' <param name="sender"></param>
   ''' <param name="ColumnName">Name of auto-incrementing key</param>
   ''' <param name="Seed">Auto increment seed</param>
   ''' <remarks></remarks>
   <System.Diagnostics.DebuggerStepThrough()> _
   <System.Runtime.CompilerServices.Extension()> _
   Public Sub AddPrimaryKey(ByVal sender As DataColumnCollection, _
                            ByVal ColumnName As String, ByVal Seed As Integer)
      sender.Add(New DataColumn(ColumnName, GetType(System.Int32)))
      sender.Item(ColumnName).AutoIncrement = True
      sender.Item(ColumnName).AllowDBNull = False
      sender.Item(ColumnName).ReadOnly = True
      sender.Item(ColumnName).AutoIncrementSeed = Seed
   End Sub
   ''' <summary>
   ''' Create an auto incrementing primary key, seed and step are user defined
   ''' </summary>
   ''' <param name="sender"></param>
   ''' <param name="ColumnName">Name of auto-incrementing key</param>
   ''' <param name="Seed">Auto increment seed</param>
   ''' <param name="StepAmount">Step for new records</param>
   ''' <remarks></remarks>
   <System.Diagnostics.DebuggerStepThrough()> _
   <System.Runtime.CompilerServices.Extension()> _
   Public Sub AddPrimaryKey(ByVal sender As DataColumnCollection, _
                            ByVal ColumnName As String, ByVal Seed As Integer, _
                            ByVal StepAmount As Integer)

      sender.Add(New DataColumn(ColumnName, GetType(System.Int32)))
      sender.Item(ColumnName).AutoIncrement = True
      sender.Item(ColumnName).AllowDBNull = False
      sender.Item(ColumnName).ReadOnly = True
      sender.Item(ColumnName).AutoIncrementSeed = Seed
      sender.Item(ColumnName).AutoIncrementStep = StepAmount
   End Sub
End Module
