请帮忙。这似乎应该很简单,但我猜对我来说不是。
我有一个类在特定日期为事件建模。我有一个单独的类,它模拟包含EmailMessages的时间轴,以便在事件日期之后发送。我有一个第三类(SentMail),它记录为事件发送的每封电子邮件。看起来很简单,对吧?
我正在尝试使用NHibernate来查询到期的事件和消息(基于事件日期和时间线时间),其中尚未发送消息(不存在条件)。 SQL的相对简单,但我很难在NHibernate中实现它,并希望得到任何建议。
我尝试过LINQ(首选),并尝试过QueryOver查询但没有成功。我甚至尝试了一个命名查询(因为SQL并不困难)。我得出结论,问题不是数据或查询,而是如何投影到返回类型。
基本上,SentMail包含消息,事件和日期(3个字段+数据库生成的id列)。然而,事件和消息是具有许多属性的复杂对象,一些被建模为组件,一些被建模为对其他实体的引用。我需要存储在SentMail表中的是Event.ID和Message.ID以及Date(作为参数传递)。我一直无法找到将查询结果投影到SentMail实例的方法,而没有指定每个组成对象的所有单独组件属性。这感觉就像一个糟糕的代码味道。由于这些已映射到其他地方,因此我不需要将这些映射到结果集中并映射到这些复杂对象的许多属性中。
所以我的问题是,是否有办法返回包含两个实体(或两个实体的代理)的结果集,而不映射两个源实体的所有组件和属性。
或者,有没有办法返回SentMail对象的结果集,引用Event和Message对象,而不完全保留Event和Message实例的所有组件和相关引用?