Cathal, it hasn't solved my issue. My setup was, from what I can tell, like you posted with the exception that I did not have a constructor for the class property that set it to null.nullboolean. So I put that in there but it's still not working. Here is my code (the whole DAL) from start to finish (with the other properties removed for space in this post):
My Info Class
Public Class RynoStatsInfo
#Region "Private Members"
Private _applyENJPT As Boolean
#End Region
#Region "Constructors"
Public Sub New()
_applyENJPT = Null.NullBoolean 'is this where you can make null Boolean transfer possible?
End Sub
Public Sub New(ByVal applyENJPT As Boolean)
Me.ApplyENJPT = applyENJPT
End Sub
#End Region
#Region "Public Properties"
Public Property ApplyENJPT() As Boolean
Get
Return _applyENJPT
End Get
Set(ByVal Value As Boolean)
_applyENJPT = Value
End Set
End Property
#End Region
End Class
My Controller Class
Public Class RynoStatsController
#Region "Public Methods"
Public Sub AddRynoStats(ByVal objRynoStats As RynoStatsInfo)
DataProvider.Instance().AddRynoStats(objRynoStats.ApplyENJPT)
End Sub
#End Region
End Class
My Data Provider
Public MustInherit Class DataProvider
#Region "Shared/Static Methods"
' singleton reference to the instantiated object
Private Shared objProvider As DataProvider = Nothing
' constructor
Shared Sub New()
CreateProvider()
End Sub
' dynamically create provider
Private Shared Sub CreateProvider()
objProvider = CType(Framework.Reflection.CreateObject("data", "Ryno.DNN.Modules.RynoStats.Data", "Ryno.DNN.Modules.RynoStats"), DataProvider)
End Sub
' return the provider
Public Shared Shadows Function Instance() As DataProvider
Return objProvider
End Function
#End Region
#Region "RynoStats Methods"
Public MustOverride Sub AddRynoStats(ByVal ApplyENJPT As Boolean)
#End Region
End Class
My SQLData Provider
Public Class SqlDataProvider
Inherits DataProvider
#Region "Private Members"
Private Const ProviderType As String = "data"
Private _providerConfiguration As Framework.Providers.ProviderConfiguration = Framework.Providers.ProviderConfiguration.GetProviderConfiguration(ProviderType)
Private _connectionString As String
Private _providerPath As String
Private _objectQualifier As String
Private _databaseOwner As String
#End Region
#Region "Constructors"
Public Sub New()
' Read the configuration specific information for this provider
Dim objProvider As Framework.Providers.Provider = CType(_providerConfiguration.Providers(_providerConfiguration.DefaultProvider), Framework.Providers.Provider)
' Read the attributes for this provider
If objProvider.Attributes("connectionStringName") <> "" AndAlso _
System.Configuration.ConfigurationSettings.AppSettings(objProvider.Attributes("connectionStringName")) <> "" Then
_connectionString = System.Configuration.ConfigurationSettings.AppSettings(objProvider.Attributes("connectionStringName"))
Else
_connectionString = objProvider.Attributes("connectionString")
End If
_providerPath = objProvider.Attributes("providerPath")
_objectQualifier = objProvider.Attributes("objectQualifier")
If _objectQualifier <> "" And _objectQualifier.EndsWith("_") = False Then
_objectQualifier += "_"
End If
_databaseOwner = objProvider.Attributes("databaseOwner")
If _databaseOwner <> "" And _databaseOwner.EndsWith(".") = False Then
_databaseOwner += "."
End If
End Sub
#End Region
#Region "Properties"
Public ReadOnly Property ConnectionString() As String
Get
Return _connectionString
End Get
End Property
Public ReadOnly Property ProviderPath() As String
Get
Return _providerPath
End Get
End Property
Public ReadOnly Property ObjectQualifier() As String
Get
Return _objectQualifier
End Get
End Property
Public ReadOnly Property DatabaseOwner() As String
Get
Return _databaseOwner
End Get
End Property
#End Region
#Region "General Public Methods"
Private Function GetNull(ByVal Field As Object) As Object
Return DotNetNuke.Common.Utilities.Null.GetNull(Field, DBNull.Value)
End Function
#End Region
#Region "RynoStats Methods"
Public Overrides Sub AddRynoStats(ByVal applyENJPT As Boolean)
SqlHelper.ExecuteScalar(ConnectionString, DatabaseOwner & ObjectQualifier & "AddRynoStats", applyENJPT)
End Sub
#End Region
End Class
My Stored Procedure
CREATE PROCEDURE dbo.AddRynoStats
@ApplyENJPT bit
AS
INSERT INTO RynoStats (
[ApplyENJPT]
) VALUES (
@ApplyENJPT
)
select SCOPE_IDENTITY()
GO
My SQL Database Table
The column for ApplyENJPT is set to allow nulls