Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se
0
respostas

Orientação Objeto x Mapeamento

        class A {

            public IList<D> BagTipo0 { get; set; }

            public IList<E> BagTipo1 { get; set; }

            public IList<F> BagTipo2 { get; set; }
        }

        class B { }

        enum Tipo
        {
            Tipo0,
            Tipo1,
            Tipo2
        }

        abstract class C
        {
            public C(Tipo tipo)
            {
                Tipo = tipo;
            }

            public Tipo Tipo { get; protected internal set; }

            public B B { get; set; }

            public DateTime DataInicio { get; set; }
        }

        class D : C
        {
            public D() : base(Tipo.Tipo0)
            {
            }
        }

        class E : C
        {
            public E() : base(Tipo.Tipo1)
            {
            }
        }

        class F : C
        {
            public F() : base(Tipo.Tipo2)
            {
            }
        }

        //<class name="A">
        //    <bag name = "Addresses" >
        //        < key column="" />
        //        <one-to-many class="D" />
        //    </bag>
        //    <bag name = "Addresses" >
        //        < key column="" />
        //        <one-to-many class="E" />
        //    </bag>
        //    <bag name = "Addresses" >
        //        < key column="" />
        //        <one-to-many class="F" />
        //    </bag>
        //</class>

        //<class name="C" table="Historico">
        //    <discriminator column = "Tipo" type="Int32" Force="True"/>
        //    <property name = "Tipo" />

        //    <many-to-one name="B" class="B"/>
        //    <property name = "DataInicio" type="DateTime"/>

        //    <subclass name = "D" discriminator-value="0">
        //    </subclass>    

        //    <subclass name = "E" discriminator-value="1">
        //    </subclass>

        //    <subclass name = "F" discriminator-value="2">
        //    </subclass>
        //</class>

Com o objetivo de criar um histórico de atribuições (enum Tipo) da class B foi criado a class C, D, E, F. A classe A tem um bag por tipo de atribuição. Nota: Em cada bag a informação data é única e esta é validada em uma classe de validação e depois garantida por UK no banco de dados. Nota: É uma aplicação WEB.

Após assistir o conteúdo de refatoração de tipo, fiquei curioso em saber outras maneiras de fazer o cenário acima.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software