2009-10-02 65 views
1

我有这样一个身份映射这样:Id属性

Id(x => x.GuidId).Column("GuidId") 
    .GeneratedBy.GuidComb().UnsavedValue(Guid.Empty); 

当我从数据库中检索对象,我对象的GuidId属性Guid.Empty,而不是实际的Guid(在属性该类是System.Guid类型的)。但是,对象中的所有其他属性都可以很好地填充。

数据库字段的数据类型(SQL Server 2005)是uniqueidentifier,并标记为RowGuid。

连接到数据库的应用程序是一个VB.NET网站项目(不是“Web应用程序”或“MVC Web应用程序” - 只是一个常规的“网站”项目)。我通过一个自定义的HttpModule打开NHibernate会话。这里是HTTP模块:

public class NHibernateModule : System.Web.IHttpModule 
{ 
    public static ISessionFactory SessionFactory; 
    public static ISession Session; 
    private static FluentConfiguration Configuration; 

    static NHibernateModule() { 
     if (Configuration == null) { 
      string connectionString = cfg.ConfigurationManager.ConnectionStrings["myDatabase"].ConnectionString; 

      Configuration = Fluently.Configure() 
       .Database(MsSqlConfiguration.MsSql2005.ConnectionString(cs => cs.Is(connectionString))) 
       .ExposeConfiguration(c => c.Properties.Add("current_session_context_class", "web")) 
       .Mappings(x => x.FluentMappings.AddFromAssemblyOf<LeadMap>().ExportTo("C:\\Mappings")); 
     } 

     SessionFactory = Configuration.BuildSessionFactory(); 
    } 

    public void Init(HttpApplication context) { 
     context.BeginRequest += delegate { 
      Session = SessionFactory.OpenSession(); 
      CurrentSessionContext.Bind(Session); 
     }; 

     context.EndRequest += delegate { 
      CurrentSessionContext.Unbind(SessionFactory); 
     }; 
    } 

    public void Dispose() { 
     Session.Dispose(); 
    } 
} 

最奇怪的一部分,是从我的单元测试项目,作为我希望返回的GuidId财产。我甚至在网站正在打击的时候,将它安装在确切的数据库中。我能想到的两个项目之间是

  1. 单元测试项目,唯一的区别是在C#
  2. 一些与会话中的HttpModule和我单位之间管理方式测试

的单元测试的配置如下:

Fluently.Configure() 
    .Database(MsSqlConfiguration.MsSql2005.ConnectionString(cs => cs.Is(connectionString))) 
    .Mappings(x => x.FluentMappings.AddFromAssemblyOf<LeadDetailMap>()); 

我刚刚出来的想法。任何帮助将不胜感激。

感谢

回答

0

我有一个类似的问题时,在映射属性名称没有设置。您可以尝试将流畅的映射保存到Xmls中并检查它们。

+0

感谢您的出口提示(我是NHibernate的新手)。 不幸的是,这两个项目之间的映射看起来完全相同。这里的GuidId柱: <列名称= “GuidId”/> <发电机组=“guid.comb”/> 仍处于亏损状态。 – 2009-10-02 14:10:58