2012-08-13 42 views
2

我GOOGLE了它,但我找不到任何工作示例如何配置nhibernate 3.3的代码。这是我能找到,但它不工作,它会抛出异常“的用户必须提供一个ADO.NET连接”nhibernate 3.3 SQL服务器配置

var cfg = new Configuration(); 
cfg.DataBaseIntegration(c=> c.Dialect<MsSql2008Dialect>()); 
cfg.SetProperty("hibernate.connection.connection_string", "Data Source=localhost;Initial Catalog=Test;Integrated Security=SSPI;") 
    .SetProperty("hibernate.connection.driver_class", "NHibernate.Driver.SqlClientDriver") 
    .SetProperty("hibernate.connection.provider", "NHibernate.Connection.DriverConnectionProvider"); 

var mapper = new ConventionModelMapper(); 
mapper.Class<User>(map => 
{ 
    map.Id(x => x.Id, m => m.Generator(Generators.Guid)); 
    map.Property(x => x.UserName); 
}); 
var mapping = mapper.CompileMappingFor(new Type[] { typeof(User) }); 

cfg.AddDeserializedMapping(mapping, "test"); 

var factory = cfg.BuildSessionFactory(); 

var session = factory.OpenSession(); 

session.SaveOrUpdate(new User() { Id = Guid.NewGuid(), UserName = "Hello" }); 

session.Flush(); 
session.Close(); 
factory.Close(); 

有什么不对?什么不见​​了?我在哪里可以找到一个工作的例子?

谢谢

回答

1

新流利的NHibernate配置称为Loquacious。您可以在James Kovacs博客上找到an introduction to it

另外,请看this SO question。它有链接的集合,主要用于测绘的代码功能:

Getting started with NHibernate 3.2 Loquacious API

至于您的配置,不需要使用.SetProperty()调用初始化数据库连接。相反,使用这样的东西:

var cfg = new Configuration(); 
cfg.DataBaseIntegration(c=> 
    { 
     c.Dialect<MsSql2008Dialect>()); 
     c.ConnectionString = 
      "Data Source=localhost;Initial Catalog=Test;Integrated Security=SSPI;"; 
    }