Fluent NHibernate添加程序集运行时



我在Visual Studio中有以下结构

Control (Solution)
  AppDB (Project)
    Classes (Folder)
       Piece.cs
    Mapping (Folder)
       PieceMap.cs

我在运行时按照以下说明添加程序集图

Configuration hibernateConfiguration = new Configuration();
hibernateConfiguration.SetProperty("connection.connection_string", "server=(local);Data Source="+pRutaDB);
hibernateConfiguration.AddAssembly("AppDB.Mapping.PieceMap");
hibernateConfiguration = hibernateConfiguration.Configure();
NHibernate.ISessionFactory sessionFactory = hibernateConfiguration.BuildSessionFactory();
NHibernate.ISession session = sessionFactory.OpenSession();
NHibernate.ITransaction tr = session.BeginTransaction();
Piece p = new Piece();
p.name = "Test Piece";
pSession.SaveOrUpdate(p);
tr.Commit();

但是当tr.提交((指令到达,出现以下错误

Error: NHibernate.MappingException: Could not add assembly AppDb.Mapping.PieceMap ---> System.IO.FileNotFoundException

任何人都可以告诉我如何在运行时添加程序集?

谢谢!

编辑:使用指令,错误更改hibernateConfiguration.AddAssembly(typeof(GeometriaDB.Mapping.PieceMap).Assembly);

现在出现以下错误:

NHibernate.MappingException: No persister for: GeometriaDB.Clases.Proyecto

那么现在为什么会出现这个错误呢?

至少你应该在程序集名称中添加.dll:

hibernateConfiguration.AddAssembly("AppDB.Mapping.PieceMap.dll");

并且dll也应该在同一目录中,或者您应该显示程序集的完整路径。

您可以使用的另一种方法是:

hibernateConfiguration.AddAssembly(typeof(AppDB.Mapping.PieceMap.<and any class name>).Assembly);

最新更新