none
Ajuda em ActiveRecord com NHibernate RRS feed

  • Pergunta

  • Estou fazendo um estudo sobre o ActiveRecord mas estou tendo dificuldadades na implementação. Constri uma classes para testes desta forma:

    namespace TesteActiveRecord
    {
        [ActiveRecord(Table="tblPessoa")]
        class _Pessoa: ActiveRecordBase<_Pessoa>
        {
            private int _Codigo;
            private string _Nome;
            private int _CodigoMunicipio;
            private DateTime _Data;
           
            [PrimaryKey(Column="idPessoa")]
            public int Codigo
            {
                get { return _Codigo; }
                set { _Codigo = value; }
            }
           
            [Property(Column="nmPessoa")]
            public string Nome
            {
                get { return _Nome; }
                set { _Nome = value; }
            }

            [Property(Column = "idMunicipio")]
            public int CodigoMunicipio
            {
                get { return _CodigoMunicipio; }
                set { _CodigoMunicipio = value; }
            }       
           
            [Property(Column="dtCadastro")]
            public DateTime Data
            {
                get { return _Data; }
                set { _Data = value; }
            }
        }

    Criei uma classes para iniciar o FrameWork:

        class _InicializaActiveRecord
        {               
            public void Inicializar()
            {
                string xml = @"C:\Temp\TesteActiveRecord\AppConfig.Xml";
                Type[] Tipos = new Type[] { typeof(_Pessoa) };
                XmlConfigurationSource XmlConfig = new XmlConfigurationSource(xml);
                ActiveRecordStarter.Initialize(XmlConfig, Tipos);       
            }
        }

    Mas ele esta me dado este erro:

    O inicializador de tipo de 'Castle.ActiveRecord.Framework.Internal.EventListener.EventListenerContributor' acionou uma exceção.

    Nesta Linha:

    ActiveRecordStarter.Initialize(XmlConfig, Tipos);       

    Será que alguem poderia me dar uma luz

    Desde ja obrigado;
    segunda-feira, 14 de dezembro de 2009 16:45

Respostas

  • Fala Márcio,

    No seu config, você deve ter as seguintes configurações. No emu caso, trata-se de um projeto Web:

    <configuration>
        <configSections>
            <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord"/>
            ... Outras configurações....
        </configSections>

        <connectionStrings>
            <add name="MinhaConexao" connectionString="Data Source=.\sqlexpress;Initial Catalog=MeuBanco;Integrated Security=True;"/>
        </connectionStrings>

        <activerecord isWeb="true">
          <config>
             <add key="connection.driver class" value="NHibernate.Driver.SqlClientDriver"/>
             <add key="dialect" value="NHibernate.Dialect.MsSql2000Dialect"/>
             <add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
             <add key="connection.connection_string_name" value="MinhaConexao"/>
             <add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"/>
        </config>
      </activerecord>

      ... Outras configurações....

    </configuration>

    Para inicializar o ActiveRecord:

    Castle.ActiveRecord.Framework.IConfigurationSource source = System.Configuration.ConfigurationManager.GetSection("activerecord") as Castle.ActiveRecord.Framework.IConfigurationSource;

    Castle.ActiveRecord.ActiveRecordStarter.Initialize(typeof(_Pessoa).Assembly, source);

    Forte abraço,

    André Borges Medeiros
    MCPD, MCT

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    terça-feira, 15 de dezembro de 2009 12:07
  • Olá Márcio,

    Peço-lhe que marque a resposta como certa, pois é um indicador valioso dentro do fórum.
    Obrigado.

    J. ALEXANDRE



    ps:
    Usando o GLOBAL.ASAX e o evento Application_Start:

    <%@ Application Language="C#" %>
    <%@ Import Namespace="ViaOceanica" %>
    <%@ Import Namespace="Castle.ActiveRecord" %>
    <%@ Import Namespace="Castle.ActiveRecord.Framework" %>
    <%@ Import Namespace="Castle.ActiveRecord.Framework.Config" %>

    <script runat="server">

        void Application_Start(object sender, EventArgs e)
        {
            Castle.ActiveRecord.Framework.IConfigurationSource source =
        System.Configuration.ConfigurationManager.GetSection("activeRecord") as Castle.ActiveRecord.Framework.IConfigurationSource;
            ActiveRecordStarter.Initialize(source
                                           ,typeof(Pessoas)
                                           ,typeof(Documentos)
                                           ,typeof(Livraria));
                                           
                                           );
            //ActiveRecordStarter.CreateSchema();
        }

    • Marcado como Resposta marcio.chiaveli segunda-feira, 28 de dezembro de 2009 13:19
    quarta-feira, 16 de dezembro de 2009 14:36

Todas as Respostas

  • Fala Márcio,

    No seu config, você deve ter as seguintes configurações. No emu caso, trata-se de um projeto Web:

    <configuration>
        <configSections>
            <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord"/>
            ... Outras configurações....
        </configSections>

        <connectionStrings>
            <add name="MinhaConexao" connectionString="Data Source=.\sqlexpress;Initial Catalog=MeuBanco;Integrated Security=True;"/>
        </connectionStrings>

        <activerecord isWeb="true">
          <config>
             <add key="connection.driver class" value="NHibernate.Driver.SqlClientDriver"/>
             <add key="dialect" value="NHibernate.Dialect.MsSql2000Dialect"/>
             <add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
             <add key="connection.connection_string_name" value="MinhaConexao"/>
             <add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"/>
        </config>
      </activerecord>

      ... Outras configurações....

    </configuration>

    Para inicializar o ActiveRecord:

    Castle.ActiveRecord.Framework.IConfigurationSource source = System.Configuration.ConfigurationManager.GetSection("activerecord") as Castle.ActiveRecord.Framework.IConfigurationSource;

    Castle.ActiveRecord.ActiveRecordStarter.Initialize(typeof(_Pessoa).Assembly, source);

    Forte abraço,

    André Borges Medeiros
    MCPD, MCT

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    terça-feira, 15 de dezembro de 2009 12:07
  • Valeu André, deu certo.
    quarta-feira, 16 de dezembro de 2009 12:52
  • Olá Márcio,

    Peço-lhe que marque a resposta como certa, pois é um indicador valioso dentro do fórum.
    Obrigado.

    J. ALEXANDRE



    ps:
    Usando o GLOBAL.ASAX e o evento Application_Start:

    <%@ Application Language="C#" %>
    <%@ Import Namespace="ViaOceanica" %>
    <%@ Import Namespace="Castle.ActiveRecord" %>
    <%@ Import Namespace="Castle.ActiveRecord.Framework" %>
    <%@ Import Namespace="Castle.ActiveRecord.Framework.Config" %>

    <script runat="server">

        void Application_Start(object sender, EventArgs e)
        {
            Castle.ActiveRecord.Framework.IConfigurationSource source =
        System.Configuration.ConfigurationManager.GetSection("activeRecord") as Castle.ActiveRecord.Framework.IConfigurationSource;
            ActiveRecordStarter.Initialize(source
                                           ,typeof(Pessoas)
                                           ,typeof(Documentos)
                                           ,typeof(Livraria));
                                           
                                           );
            //ActiveRecordStarter.CreateSchema();
        }

    • Marcado como Resposta marcio.chiaveli segunda-feira, 28 de dezembro de 2009 13:19
    quarta-feira, 16 de dezembro de 2009 14:36