如何将NHibernate域类映射到现有表

时间:2010-09-13 16:52:01

标签: nhibernate nhibernate-mapping

我目前正在尝试在我没有SQL 2005中的CREATE TABLE权限的项目中使用NHibernate。

我一直收到映射错误,我的假设是我没有通过生成表来设置表。假设NHibernate只能成功映射其工具生成的表,这是否公平?

如果没有,我如何确保它适用于现有表?


9月14日 响应要求提供更多细节:

  

<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" />

这是班级:

命名空间MyNamespace     公开课会议

    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 Byte)
            _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

结束命名空间

1 个答案:

答案 0 :(得分:0)

我找到了问题的根源。

错误是因为我在调用AddAssembly(typeof(Type))之前没有调用Configure()方法。当我创建一个SessionFactory对象时会发生这种情况。

以下是此解决方案的VB示例:

<强>之前

    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

<强>后

    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