Fluent Nhibernate-将对象保存到数据库

Fluent Nhibernate-将对象保存到数据库,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我的WCF服务是一项报告服务-创建报告并通过电子邮件发送。电子邮件中的报告可以是附件/电子邮件正文,具体取决于要求 现在,客户端希望在发送电子邮件之前预览电子邮件,所以我的WCF服务需要将整个电子邮件对象返回到调用web应用程序。如果客户对电子邮件对象感到满意,他们只需单击“发送”,然后再次调用WCF服务发送电子邮件 我正在考虑在将电子邮件对象发送给客户端进行审查之前将其保存在数据库中。 考虑到以下情况,在my scenerio中保存电子邮件对象的最佳方法是什么: 我使用的是流利的NHiber

我的WCF服务是一项报告服务-创建报告并通过电子邮件发送。电子邮件中的报告可以是附件/电子邮件正文,具体取决于要求

现在,客户端希望在发送电子邮件之前预览电子邮件,所以我的WCF服务需要将整个电子邮件对象返回到调用web应用程序。如果客户对电子邮件对象感到满意,他们只需单击“发送”,然后再次调用WCF服务发送电子邮件

我正在考虑在将电子邮件对象发送给客户端进行审查之前将其保存在数据库中。 考虑到以下情况,在my scenerio中保存电子邮件对象的最佳方法是什么:

  • 我使用的是流利的NHibernate
  • 每个电子邮件对象可以有多个附件
  • 当报表作为电子邮件正文嵌入而不是附件时,电子邮件正文可能会很重

谢谢大家!

这完全取决于生成报告所需的时间。如果只是几秒钟的问题,那么只需使用与原始请求相同的参数重新创建报告。如果您的应用程序与我的类似,那么大部分报告时间都花在数据库中,在这种情况下,将查询/存储过程返回的格式化数据存储在可访问的位置(例如服务器的temp目录)可能会令人满意


我不建议将二进制电子邮件对象或任何类似性质的东西存储在数据库中。

我大体上同意。除此之外,我认为将电子邮件存储到数据库也是一种选择。管理临时目录中的文件比管理临时目录中的文件更简单(更容易处理复杂的结构、没有访问权限以及“目录不存在”或“文件已经存在”等问题)。那么-为什么不呢?那是真的。我只是觉得数据库是为了数据,文件系统是为了文件。谢谢你的输入。对于进一步的查询,我使用aspNetEmail创建电子邮件对象,它允许我将电子邮件保存为XML或二进制流,甚至保存为RFC标准字符串。但在这种情况下,我的客户必须知道aspNetEmail组件,或者应该能够解析RFC字符串。作为替代,现在我正在考虑将我的自定义电子邮件对象传递给客户端应用程序,并将其保存在数据库中。对于报告部分,我想将文件保存到HD,实际上只保存/传递文件路径。稍后,客户端应用程序将使用此文件路径显示为电子邮件附件。有什么评论吗?