在Firebird DB中拥有自己的生成器,名为GEN_PATIENT_ID
我想在DB端留下ID的生成,而不是NHibernate和FluentNHibernate。在此链接之后,我将覆盖默认的Fluent行为,例如this:
public class PatientOverride : IAutoMappingOverride<Patient>
{
public void Override(AutoMapping<Patient> mapping)
{
mapping.Cache.ReadOnly().Region("LongTermReadWrite");
mapping.Id(x => x.Id).GeneratedBy.Sequence("GEN_PATIENT_ID");
mapping.HasOne(patient => patient.Tag).Not.LazyLoad().Cascade.All();
}
}
但是我仍然遇到错误,因为NHibernate试图生成自己的错误:
{&#34;动态SQL错误\ r \ nSQL错误代码= -204 \ r \ n表 unknown \ r \ nHIBERNATE_UNIQUE_KEY \ r \ n在第1行第42栏&#34;}
如果我要导入覆盖,则双重检查,它应该没问题:
mappings.UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();
保存非常标准:
var patient = patientDtoMapper.MapFrom(patientDto);
using (ITransaction t = NHibernateSession.Current.BeginTransaction())
{
patientRepository.Save(patient);
t.Commit();
}
有什么想法吗?