我有一个表格结构:
------------------------------------------------
| id |daily_index|monthly_index| created |
------------------------------------------------
| GUID | 1 | 1 | 10-12-2014 |
| GUID | 2 | 2 | 10-12-2014 |
| GUID | 1 | 3 | 11-12-2014 |
| GUID | 1 | 1 | 01-01-2015 |
------------------------------------------------
我的目标是拥有一个交易对象,其代码格式灵活自然,例如
或者INV-{daily_index}/{month_in_roman}/{year_in_roman}/{monthly_index}
或者用户希望的任何格式。INV{ddmmyyyyhhiiss}-{monthly_index}-{daily_index}
该类将具有一个Code属性,用于将这些私有字段编织在一起,仅供UI使用。
在纯mysql查询中,我会这样做:
INSERT INTO transaction VALUES (// Some GUID, (SELECT COUNT(*) + 1 FROM transaction WHERE DATE(created) = DATE(NOW)), (SELECT COUNT(*) + 1 FROM transaction WHERE MONTH(created) = MONTH(NOW)), NOW());
我的问题是是否有一种方法可以在NHibernate中重现这种INSERT机制?我考虑了另一种选择,即使用COUNT查询进行SELECT查询,但我不知道是否可以在NHibernate中实现。
另一个选择是制作一个MySQL触发器,但我很想知道是否可以直接在我的项目中完成这个操作。