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