sorry guys off topic, how can i integrate nhibernate envers with castle activerecords.
thanks On Wed, Mar 26, 2014 at 5:36 PM, Roger Kratz <[email protected]>wrote: > I've already answered it on SO. At least the "why and if a link table is > needed". If I got the SO message and his own answer correctly, the > exception problem has been solved (?). > > > > *From:* [email protected] [mailto:[email protected]] *On > Behalf Of *José Henrique > *Sent:* den 26 mars 2014 14:11 > *To:* [email protected] > *Subject:* [nhusers] NHibernate Envers: Cannot insert duplicate key in > object > > > > A friend who works with me have this problem and posted it on > stackoverflow <http://stackoverflow.com/q/22661873/20683>. > > I take and post here also, if anyone knows assist us, we thank you. > > > > I'm using Envers to audit tables, but it's creating some audit tables for > unknown/absent tables. > > It's looks like a Many To Many relation audit table for Many To One > relations. > > > > Is this right? If it's, Why? > > > > dbo.HorarioFixo - OK > > dbo.HorarioFixo_Auditoria - OK > > dbo.HorarioFixo_JanelaHorarioFixo_Auditoria - NOK > > dbo.JanelaHorarioFixo - OK > > dbo.JanelaHorarioFixo_Auditoria - OK > > > > But when I try to remove/delete and HorarioFixo I'm getting an error. > > > > The error I'm getting: > > > > NHibernate.Exceptions.GenericADOException > > could not execute batch command.[SQL: SQL not available] > > em > NHibernate.Engine.ActionQueue.BeforeTransactionCompletionProcessQueue.BeforeTransactionCompletion() > > em > NHibernate.Impl.SessionImpl.BeforeTransactionCompletion(ITransaction tx) > > em NHibernate.Transaction.AdoTransaction.Commit() > > em > Foo.Testes.Servicos.TesteCanalDeTransmissaoService.RemoveDependenciasCorretamente() > na TesteCanalDeTransmissaoService.cs: line 195 > > System.Data.SqlClient.SqlException > > Violation of PRIMARY KEY constraint 'PK__HorarioF__450088476960C81E'. > Cannot insert duplicate key in object > 'dbo.HorarioFixo_JanelaHorarioFixo_Auditoria'. > > Violation of PRIMARY KEY constraint 'PK__HorarioF__450088476960C81E'. > Cannot insert duplicate key in object > 'dbo.HorarioFixo_JanelaHorarioFixo_Auditoria'. > > The statement has been terminated. > > The statement has been terminated. > > > > This is the SQL duplicated: > > > > exec sp_executesql N'INSERT INTO > HorarioFixo_JanelaHorarioFixo_Auditoria (REVTYPE, REV, HorarioFixoId, > JanelaHorarioFixoId) VALUES (@p0, @p1, @p2, @p3)',N'@p0 tinyint,@p1 > int,@p2 bigint,@p3 bigint',@p0=2,@p1=3,@p2=1,@p3=2 go > > > > All this is a part of the code. If you need something more, leave a > comment. > > > > My classes: > > > > public class Entidade > > { > > protected Entidade(); > > > > public virtual long Id { get; set; } > > public virtual long Version { get; set; } > > > > public abstract override bool Equals(object obj); > > public override int GetHashCode(); > > } > > > > public class Horario : Entidade > > { > > protected Horario() > > { > > > > } > > } > > > > public class HorarioFixo : Horario > > { > > public virtual int Frequencia { get; set; } > > > > public virtual ICollection<JanelaHorarioFixo> JanelasRemessa { > get; set; } > > > > public virtual ICollection<JanelaHorarioFixo> JanelasRetorno { > get; set; } > > } > > > > public class JanelaHorarioFixo : Entidade > > { > > public virtual TimeSpan HorarioInicio { get; set; } > > > > public virtual TimeSpan? HorarioLimite { get; set; } > > } > > > > My mappings: > > > > public class HorarioMap : ClassMapping<Horario> > > { > > public HorarioMap() > > { > > Id(x => x.Id, mapper => > > { > > mapper.Generator(Generators.Identity); > > mapper.UnsavedValue(0); > > }); > > } > > } > > > > public class HorarioFixoMap : JoinedSubclassMapping<HorarioFixo> > > { > > public HorarioFixoMap() > > { > > Property(x => x.Frequencia); > > > > Bag(x => x.JanelasRemessa, m => > > { > > m.Cascade(Cascade.All); > > m.Lazy(CollectionLazy.NoLazy); > > }, map => map.OneToMany()); > > > > Bag(x => x.JanelasRetorno, m => > > { > > m.Cascade(Cascade.All); > > m.Lazy(CollectionLazy.NoLazy); > > }, map => map.OneToMany()); > > } > > } > > > > public class JanelaHorarioFixoMap : ClassMapping<JanelaHorarioFixo> > > { > > public JanelaHorarioFixoMap() > > { > > Id(x => x.Id, mapper => > > { > > mapper.Generator(Generators.Identity); > > mapper.UnsavedValue(0); > > }); > > > > Property(x => x.HorarioInicio, m => m.NotNullable(true)); > > > > Property(x => x.HorarioLimite, m => m.NotNullable(false)); > > } > > } > > > > NH and Envers configurations: > > > > var ormHelper = ORMHelperUtils.GetORMHelper(); > > > > var mapper = new MyConventionModelMapper(); > > > > _config = new Configuration(); > > > > mapper.AddMappings(ormHelper.GetMappings()); > > mapper.AddMapping(typeof(REVINFOMap)); > > ormHelper.SetupApplicationNeeds(_config); > > > > > _config.AddMapping(mapper.CompileMappingForAllExplicitlyAddedEntities()); > > _config.SetProperty(Environment.CurrentSessionContextClass, "call"); > > > > if (ormHelper.UseEnvers) > > { > > var classesDominio = ormHelper.GetDomainTables(); > > > > if (classesDominio.Any()) > > { > > var envers = new FluentConfiguration(); > > envers.Audit(classesDominio); > > > > envers.SetRevisionEntity<REVINFO>(e => e.Id, e => e.Date, new > CustomRevisionListener()); > > > > _config.SetEnversProperty(ConfigurationKey.AuditTableSuffix, > "_Auditoria"); > > _config.IntegrateWithEnvers(envers); > > } > > } > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/nhusers. > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/nhusers. > For more options, visit https://groups.google.com/d/optout. > -- Best Regards Apatira Lookman +2348028400104 -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/d/optout.
