2

我用谷歌搜索了它,但我找不到任何工作示例如何通过代码配置 nhibernate 3.3。这是我能找到的,但它不起作用,它抛出异常“用户必须提供 ADO.NET 连接”

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();

怎么了?什么不见​​了?我在哪里可以找到一个工作示例?

谢谢

4

1 回答 1

1

新的 fluent NHibernate 配置称为 Loquacious。您可以在James Kovacs博客上找到它的介绍。

另外,看看这个 SO question。它有一组链接,主要用于按代码功能进行映射:

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;";
    }
于 2012-08-13T17:27:56.470 回答