为多项目解决方案配置nHibernate

时间:2010-03-15 22:58:46

标签: c# nhibernate

我正在用C#winforms做一个项目。该项目由以下人员组成:

alt text http://img139.imageshack.us/img139/2540/esquemaw.png

  • 客户端项目:用户将调用CRUD操作的Windows窗体;
  • 服务器项目;
  • Common Project:这个项目将保存模型(图片中只有模型Item);
  • ListSingleton项目:将在模型上执行操作的远程对象;

我尝试使用3层样式,其中CLIENT和SERVER将是视图层,LISTSINGLETON将是控制器层(其中所有对象都是已创建),COMMON项目是模型层 ...

我已经完成了所有通信,但现在我需要处理mysql数据库中数据的持久性。我试图使用nHibernate,但我遇到了一些麻烦。

我的主要问题是如何组织我的hibernate配置。 - 我在哪个项目中保留映射?共同项目?

  • 我在哪个项目中保留了hibernate配置文件(App.config)? ListSingleton项目?

  • 我在哪个项目中执行此操作:

        Configuration cfg = new Configuration();
        cfg.AddXmlFile("Item.hbm.xml");
        ISessionFactory factory = cfg.BuildSessionFactory();
        ISession session = factory.OpenSession();
        ITransaction transaction = session.BeginTransaction();
    
        Item newItem = new Item("BLAA");
    
        // Tell NHibernate that this object should be saved
        session.Save(newItem);
    
        // commit all of the changes to the DB and close the ISession
        transaction.Commit();
        session.Close();
    

在ListSingleton项目中?虽然我在ListSingleton中引用了Common Project,但我仍然在addXml行中出错...


  • 当我有两个项目时,一个模型和& mappings和另一个使用hibernate的地方(这个项目引用了模型项目),我该如何做“cfg.AddXmlFile(”User.hbm.xml“);”我一直在试图“无法从文件User.hbm.xml配置数据存储”当我使用这个2项目结构时。

我的映射是正确的,因为我尝试使用单项目解决方案并且它有效:X

2 个答案:

答案 0 :(得分:2)

  

我在哪个项目中保留映射?共同项目?

是。映射文件应与模型位于同一项目中。

  

我在哪个项目中保留了hibernate配置文件(App.config)? ListSingleton项目?

在客户端项目中。我假设客户端项目将对象传递给ListSingleton,它将作用于它们。

  

我在哪个项目中执行此操作:

在客户端项目中。我想指出你应该只创建一次ISessionFactory。

答案 1 :(得分:0)

我找到了问题的答案

  

我在哪个项目中保留   映射?共同项目?

正如Jamie Ide所说,是的,它应该在模型层中。

  

我在哪个项目中保留   hibernate配置文件   (App.config中)? ListSingleton项目?

     

我在哪个项目中执行此操作:

这个配置文件和所有hibernate配置应该在控制器层中,所以它在ListSingleton项目中;

  

当我有2个项目时   模特&映射和另一个   生病的地方使用休眠(这个   项目有参考模型   项目),我该怎么做   “cfg.AddXmlFile(” User.hbm.xml “);”一世   继续保持“无法配置   来自文件User.hbm.xml的数据存储“何时   我使用这个2项目结构。

您应该将映射文件配置为嵌入式资源,如果属性较新,则应将其复制。