C# nHIbernate Fluenty的映射实体

C# nHIbernate Fluenty的映射实体,c#,reference,fluent-nhibernate,nhibernate-mapping,C#,Reference,Fluent Nhibernate,Nhibernate Mapping,我对手头的任务或更多的任务感到有点困惑,所以最好的方法就是这样做 以一个示例项目为例: 用户界面 数据(汇编) 基于数据构建的服务(程序集) 我是将所有映射放在数据程序集中,还是将它们分离到服务程序集中?或者我应该/可以完全摆脱数据程序集吗 这个问题源于在数据程序集或实用程序集中有一个nHibernate静态助手类,然后从服务程序集等引用该类 项目参考方向 UI>数据/实用程序 数据/公用设施服务 UI>服务 我只是把事情弄得太复杂了还是做错了 注: 我提到了Fluent,因为我知道可以使用

我对手头的任务或更多的任务感到有点困惑,所以最好的方法就是这样做

以一个示例项目为例:

  • 用户界面
  • 数据(汇编)
  • 基于数据构建的服务(程序集)
我是将所有映射放在数据程序集中,还是将它们分离到服务程序集中?或者我应该/可以完全摆脱数据程序集吗

这个问题源于在数据程序集或实用程序集中有一个nHibernate静态助手类,然后从服务程序集等引用该类

项目参考方向

UI>数据/实用程序

数据/公用设施服务

UI>服务

我只是把事情弄得太复杂了还是做错了

注:


我提到了Fluent,因为我知道可以使用config.xml引用程序集来映射,但我不太确定在不实际引用项目程序集的情况下如何使用Fluent来实现这一点,这会让我陷入循环引用循环中。

如果您担心将映射代码与对象的定义分离的话(您的数据),您需要一个附加的程序集,一个“数据访问层”程序集,它引用您的数据程序集并包含数据访问关注点(如您的NHibernate映射)。这样,您的数据程序集只包含POCO并了解持久性。您的数据访问程序集引用了您的数据程序集并了解持久性。我会将您的NHibernate助手方法从“实用程序”程序集中删除,而将它们放在这个新的“数据访问”程序集中


总而言之,如果您不关心将数据与其持久性机制分离,您可以转储所有内容(映射和帮助函数)在数据集合中。

我不是100%同意你的解释,我无法想象发生了什么。也许我没有正确地解释我自己。我不担心分离,但我认为我应该这样做。目的是让服务及其逻辑使用数据/数据访问集合与数据库交互。因此,如果我理解ou,我应该将所有映射和nHibernate内容放在数据访问程序集中。服务中不应该存在映射。这是正确的吗?我想说的是:虽然我当前的项目不会有插件,但未来的项目可能会有插件。在这种情况下,主体是否相同;使用数据访问程序集与数据库交互?如果那么,考虑到POCO不会出现在新表的数据访问程序集中(如果添加),映射将如何管理呢?很抱歉,混淆了这种情况,我希望正确地开始并继续进行相同的操作,而不是找到下一行,我必须重写该部分。我刚刚意识到,如果我通过数据访问程序集公开ISession我在哪里写POCO并不重要。只要可以访问ISession/current session,它就基本上打开了数据库。尽管我认为这可能是应该做的事情?我不太清楚您的用例。您的意思是什么“如果新表的数据访问程序集中没有POCO(如果添加),那么如何管理映射?"如果向数据库添加一个新表,则需要向数据程序集添加一个新POCO,并向数据访问程序集添加一个新映射。如果没有代码更改,显然无法让应用程序与新表交互。这里的问题是,很难在一条简单的消息中来回讨论此类问题。您知道吗您建议的模型在示例项目中简单解释,没有Castle或SharpArchitecture这样的额外负担。我通过示例学习,做的比阅读更多。一个使用多个服务程序集并基于Fluent的nHibernate的示例?我已经搜索了很多示例,但所有示例都不完整IPET或缺少假定已知的中间步骤。