我有一种情况,我不想重新水化引用的对象,只想更新对象的id列。
public AppointmentMap() {
Table("appointment");
Id(x => x.appointment_id).GeneratedBy.Identity().Column("appointment_id");
References(x => x.actiongroup).Column("appointment_actiongroup_id");
References(x => x.resource).Column("appointment_resource_id");
References(x => x.client).Column("appointment_client_id");
... Other fields
我希望能够在保存时更新appointment_client_id,但仍然有客户端对象用于显示目的。我不想使用DTO或其他构造做出异常情况,如果这种情况做了我需要的一切,除了我要通过设置其整数值来保存appointment_client_id的部分。我正在使用无会话事务,因为我运行的应用程序服务将包含一个Web服务,我不希望使用会话事务。
简短的问题是,您可以仅在不进行补液的情况下保存ID更改的对象。我的应用程序中有数百个地方需要它。
答案 0 :(得分:1)
我们可以使用的技术是映射Reference
和ReferenceId
。其中一个必须标记为insert="false"
update="false"
// readonly reference with all the stuff for querying
References(x => x.actiongroup)
.Column("appointment_actiongroup_id")
.Not.Insert().Not.Update();
// the only editable mapping
Map(x => x.actiongroupId, "appointment_actiongroup_id");
我使用反向方法,ReferenceId是readonly,因为现在很难在INSERT期间管理正确的ID ...但这是有效的