Hola gente, me estoy enredando con esto, tal vez me puedan dan una mano:
( Me faltan horas de vuelo con NH )

Tengo que escribir los Mapping para las Clases Clasificacion,y otras que
son sub clases de TreeEntiy<T> vean mas abajo...

// Esto es la base de lo que necesito mapear y aca no problem
    public class Entity
    {
        public virtual int Id { get; set; }
    }

    public class EntityMapping<T> : ClassMapping<T> where T : Entity
    {
        public EntityMapping()
        {
            Id(x => x.Id, m => m.Generator(Generators.HighLow));
        }

    }

// Clase base de la Clase que quiero persistir con NH
public abstract class TreeEntiy<T> : Entity where T : TreeEntiy<T>
    {
        public virtual void AddBranch( T branch)
        {
            if(_branchs==null)_branchs=new List<T>();
            _branchs.Add(branch);
            branch.Trunk = this as T;
        }

        public T Trunk { get; protected set; }

        private List<T>_branchs=new List<T>();
        public virtual T[]  Branchs{get { return _branchs.ToArray(); }}

    }
// Clase que quiero persistir con NH
    public class Clasificacion : TreeEntiy<Clasificacion>
    {
        public virtual String Denominacion { get; set; }
    }

// Algun  Test de las clase base en verde
    [TestFixture]
    public class TreeEntityTest
    {

        [Test]
        public void TreeEntityBuildTest()
        {
            var mt = new MyTreeEntity{Name = "Trunk"};
            mt.AddBranch(new MyTreeEntity { Name = "Trunk/Raiz 0" });
            mt.AddBranch(new MyTreeEntity { Name = "Trunk/Raiz 1" });
            mt.AddBranch(new MyTreeEntity { Name = "Trunk/Raiz 2" });

            Assert.AreEqual(3, mt.Branchs.Length);
            foreach( var branch in mt.Branchs)
            {
                Assert.AreEqual(0,branch.Branchs.Length);
                Assert.AreEqual(mt, branch.Trunk);
                Assert.AreEqual(mt.Name, branch.Trunk.Name);
            }

            var tr3 = mt.Branchs[1];
            Assert.AreEqual("Trunk/Raiz 1", tr3.Name);
            tr3.AddBranch(new MyTreeEntity { Name = "Trunk/Raiz 1/Raiz 0"
});
            Assert.AreEqual("Trunk/Raiz 1/Raiz
0",mt.Branchs[1].Branchs[0].Name);

        }

    }

    internal class MyTreeEntity : TreeEntiy<MyTreeEntity>
    {
        internal string Name { get; set; }
    }

Mil gracias

-- 
*Daniel A. Calvin*
Cooperator Team Member

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a