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

时间:2021-06-12 11:27:26

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

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

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?

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

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

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


14 Sept Responding to request to provide more details:

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

This is the class:

这是班级:

Namespace MyNamespace Public Class Meeting

命名空间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

End Namespace

结束命名空间

1 个解决方案

#1


0  

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.

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

Here is the VB example of this solution:

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

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

#1


0  

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.

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

Here is the VB example of this solution:

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

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