开发者

How can I map NHibernate domain classes with an existing table

I am presently trying to use NHibernate on a project where I do not have permissions to CREATE TABLE in SQL 2005.

I keep getting a mapping error, and my assumption is that I do not setup the table by generating it. Is it fair of me to assume that NHibernate can only map successfully with tables that were generated by its tool?

If not, how can I make sure it works for an existing table?


14 Sept Responding to request to provide more details:

<id name="MeetingID" column="MeetingID" type="int">
  <generator class="identity" />
</id>
<property name="Description" />
<property name="OwnerNetworkID"  />
<property name="StartDate" />
<property name="EndDate" />
<property name="DayStartHour" />
<property name="DayStartMinute" />
<property name="DayEndHour" />
<property name="DayEndMinute" />
<property name="BreakStartHour" />
<property name="BreakStartMinute" />
<property name="BreakEndHour" />
<property name="BreakEndMinute" />
<property name="IsActive" />
<property name="SessionIntervalMinutes" />
<property name="PeoplePerSlot" />
<property name="DateCreated" />
<property name="LastModified" />
<property name="UpdatedBy" />
<property name="ChangeTimestamp" />
<property name="ClosedForBookingDaysPrior" />
<property name="DefaultMeetingRoom" />

This is the class:

Namespace MyNamespace Public Class Meeting

    Private _MeetingID As Integer
    Private _OwnerNetworkID As String
    Private _Description As String

    Public Overridable Property MeetingID() As Integer
        Get
            Return _MeetingID
        End Get
        Set(ByVal value As Integer)
            _MeetingID = value
        End Set
    End Property


    Public Overridable Property Description() As String
        Get
            Return _Description
        End Get
        Set(ByVal value As String)
            _Description = value
        End Set
    End Property

    Public Overridable Property OwnerNetworkID() As String
        Get
            Return _OwnerNetworkID
        End Get
        Set(ByVal value As String)
            _OwnerNetworkID = value
        End Set
    End Property

    Private _StartDate As Date
    Public Overridable Property StartDate() As Date
        Get
            Return _StartDate
        End Get
        Set(ByVal value As Date)
            _StartDate = value
        End Set
    End Property


    Private _EndDate As Date
    Public Overridable Property EndDate() As Date
        Get
            Return _EndDate
        End Get
        Set(ByVal value As Date)
            _EndDate = value
        End Set
    End Property

    Private _DayStartHour As Byte
    Public Overridable Property DayStartHour() As Byte
        Get
            Return _DayStartHour
        End Get
        Set(ByVal value As Byte)
            _DayStartHour = value
        End Set
    End Property

    Private _DayStartMinute As Byte
    Public Overridable Property DayStartMinute() As Byte
        Get
            Return _DayStartMinute
        End Get
        Set(ByVal value As By开发者_运维百科te)
            _DayStartMinute = value
        End Set
    End Property

    Private _DayEndHour As Byte
    Public Overridable Property DayEndHour() As Byte
        Get
            Return _DayEndHour
        End Get
        Set(ByVal value As Byte)
            _DayEndHour = value
        End Set
    End Property

    Private _DayEndMinute As Byte
    Public Overridable Property DayEndMinute() As Byte
        Get
            Return _DayEndMinute
        End Get
        Set(ByVal value As Byte)
            _DayEndMinute = value
        End Set
    End Property

    Private _BreakStartHour As Byte
    Public Overridable Property BreakStartHour() As Byte
        Get
            Return _BreakStartHour
        End Get
        Set(ByVal value As Byte)
            _BreakStartHour = value
        End Set
    End Property

    Private _BreakStartMinute As Byte
    Public Overridable Property BreakStartMinute() As Byte
        Get
            Return _BreakStartMinute
        End Get
        Set(ByVal value As Byte)
            _BreakStartMinute = value
        End Set
    End Property

    Private _BreakEndHour As Byte
    Public Overridable Property BreakEndHour() As Byte
        Get
            Return _BreakEndHour
        End Get
        Set(ByVal value As Byte)
            _BreakEndHour = value
        End Set
    End Property

    Private _BreakEndMinute As Byte
    Public Overridable Property BreakEndMinute() As Byte
        Get
            Return _BreakEndMinute
        End Get
        Set(ByVal value As Byte)
            _BreakEndMinute = value
        End Set
    End Property


    Private _IsActive As Byte
    Public Overridable Property IsActive() As Byte
        Get
            Return _IsActive
        End Get
        Set(ByVal value As Byte)
            _IsActive = value
        End Set
    End Property


    Private _SessionIntervalMinutes As Byte
    Public Overridable Property SessionIntervalMinutes() As Byte
        Get
            Return _SessionIntervalMinutes
        End Get
        Set(ByVal value As Byte)
            _SessionIntervalMinutes = value
        End Set
    End Property

    Private _PeoplePerSlot As Short
    Public Overridable Property PeoplePerSlot() As Short
        Get
            Return _PeoplePerSlot
        End Get
        Set(ByVal value As Short)
            _PeoplePerSlot = value
        End Set
    End Property

    Private _DateCreated As Date
    Public Overridable Property DateCreated() As Date
        Get
            Return _DateCreated
        End Get
        Set(ByVal value As Date)
            _DateCreated = value
        End Set
    End Property
    Private _LastModified As Date
    Public Overridable Property LastModified() As Date
        Get
            Return _LastModified
        End Get
        Set(ByVal value As Date)
            _LastModified = value
        End Set
    End Property

    Private _UpdatedBy As String
    Public Overridable Property UpdatedBy() As String
        Get
            Return _UpdatedBy
        End Get
        Set(ByVal value As String)
            _UpdatedBy = value
        End Set
    End Property

    Private _ChangeTimestamp As Byte()
    Public Overridable Property ChangeTimestamp() As Byte()
        Get
            Return _ChangeTimestamp
        End Get
        Set(ByVal value As Byte())
            _ChangeTimestamp = value
        End Set
    End Property

    Private _ClosedForBookingDaysPrior As Byte
    Public Overridable Property ClosedForBookingDaysPrior() As Byte
        Get
            Return _ClosedForBookingDaysPrior
        End Get
        Set(ByVal value As Byte)
            _ClosedForBookingDaysPrior = value
        End Set
    End Property

    Private _DefaultMeetingRoom As String
    Public Overridable Property DefaultMeetingRoom() As String
        Get
            Return _DefaultMeetingRoom
        End Get
        Set(ByVal value As String)
            _DefaultMeetingRoom = value
        End Set
    End Property




End Class

End Namespace


I have found the source of my problem.

The error was cause by me not calling the Configure() method before calling AddAssembly(typeof(Type)). This happens when I create a SessionFactory object.

Here is the VB example of this solution:

Before

    Private Shared ReadOnly Property SessionFactory() As ISessionFactory
        Get
            If _sessionFactory Is Nothing Then
                Dim configuration As New Configuration
                  configuration.AddAssembly(GetType(Meeting).Assembly)
                _sessionFactory = configuration.BuildSessionFactory

            End If
            Return _sessionFactory
        End Get
    End Property

After

    Private Shared ReadOnly Property SessionFactory() As ISessionFactory
        Get
            If _sessionFactory Is Nothing Then
                Dim configuration As New Configuration

                //Was missing
                configuration.Configure()
                //Configure 
                configuration.AddAssembly(GetType(Meeting).Assembly)
                _sessionFactory = configuration.BuildSessionFactory

            End If
            Return _sessionFactory
        End Get
    End Property
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜