NHibernate使用Firebird自己的生成器

时间:2018-02-01 09:33:59

标签: c# nhibernate fluent-nhibernate firebird

在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();
}

有什么想法吗?

0 个答案:

没有答案