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.

Reply via email to