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

如何将NHibernate域类映射到现有表,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我目前正试图在一个项目上使用NHibernate,在这个项目中,我没有在SQL2005中创建表的权限 我不断得到一个映射错误,我的假设是我没有通过生成它来设置表。假设NHibernate只能成功映射由其工具生成的表,这公平吗 如果没有,如何确保它适用于现有表 9月14日 响应提供更多详细信息的请求: 结束命名空间我已找到问题的根源 该错误是由我在调用AddAssembly(typeof(Type))之前没有调用Configure()方法引起的。当我创建SessionFactory对象时

我目前正试图在一个项目上使用NHibernate,在这个项目中,我没有在SQL2005中创建表的权限

我不断得到一个映射错误,我的假设是我没有通过生成它来设置表。假设NHibernate只能成功映射由其工具生成的表,这公平吗

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


9月14日 响应提供更多详细信息的请求:


结束命名空间

我已找到问题的根源

该错误是由我在调用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

您的假设是错误的:)Nhibernate使用现有表,它不创建表。你能粘贴你的映射吗?@Claudio NHibernate可以创建表,如果你使用SchemaExport.create(true,true)@用户:您能给我们看一个
示例吗?当然可以使用现有的表,我们只需要看看您在哪里犯了错误。:)@拉斐尔·贝利亚德:谢谢你的澄清。那是一个极端的例子。用户被困在一个更简单的场景中:)嗨,Huys,我已经提供了上面的映射和vb类。也许你能告诉我我的映射出了什么问题。如果您也能让我参考一些示例,在这些示例中,我可以在现有表上使用NHibernate,而无需重新生成。
    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