Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为多项目解决方案配置nHibernate_C#_Nhibernate - Fatal编程技术网

C# 为多项目解决方案配置nHibernate

C# 为多项目解决方案配置nHibernate,c#,nhibernate,C#,Nhibernate,我在用C#winforms做一个项目。本项目由以下部分组成: 客户端项目:用户将调用CRUD操作的Windows窗体 服务器项目 普通项目:此项目将保存模型(图像中只有模型项) ListSingleton项目:将对模型执行操作的远程对象 我正在尝试使用三层样式,其中客户端和服务器将是视图层,LISTSINGLETON将是控制器层(其中创建了所有对象),公共项目是模型层 我已经完成了所有的通信工作,但是现在我需要在mysql数据库中持久化数据。我试着使用nHibernate,但我遇到了一些麻

我在用C#winforms做一个项目。本项目由以下部分组成:

  • 客户端项目:用户将调用CRUD操作的Windows窗体
  • 服务器项目
  • 普通项目:此项目将保存模型(图像中只有模型项)
  • ListSingleton项目:将对模型执行操作的远程对象

我正在尝试使用三层样式,其中客户端和服务器将是视图层,LISTSINGLETON将是控制器层(其中创建了所有对象),公共项目是模型层

我已经完成了所有的通信工作,但是现在我需要在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中引用了公共项目,但我在addXml行中不断遇到错误


  • 当我有两个项目,一个是带有模型和映射的项目,另一个是使用hibernate的项目(这个项目引用了models项目),当我使用这个2项目结构时,我该如何处理“cfg.AddXmlFile(“User.hbm.xml”);“I keep geting”无法从文件User.hbm.xml配置数据存储

我的映射是正确的,因为我尝试了一个单项目解决方案,它成功了:X

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

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

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

在客户端项目中。我假设客户机项目将对象传递给ListSingleton,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();

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

我找到了问题的答案

我应该在哪个项目中保存 映射?共同项目

正如JamieIDE所说,是的,它应该在模型层中

我应该在哪个项目中保存 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();
这个配置文件和所有hibernate配置都应该在控制器层,所以它在ListSingleton项目中

当我有两个项目时,一个是 模型与映射及其他 我将在哪里使用hibernate(这个 项目有对模型的引用 项目),我该怎么办 “cfg.AddXmlFile(“User.hbm.xml”);“I “继续获取”无法配置 文件User.hbm.xml中的数据存储 我使用这个2项目结构


您应该将映射文件配置为嵌入式资源,并在适当的时候进行复制(如果更新)。

+1我坚持使用ISessionFactory,这必须是整个应用程序中的一个单例,因为实例化成本极高。我尝试使用三层样式,其中客户端和服务器将是视图层,listSingleton将是控制器层(创建所有对象的地方),公共项目是模型层。。。那么,有了这些新信息,您认为我应该保留配置文件并在客户端创建会话吗?PS:很抱歉,我忘了在问题中添加这些信息……我不知道,我从来没有做过类似的事情。我会在负责发放许可证的那一层做这件事。ISession是可序列化的,因此您可以在客户端或控制器中进行序列化。