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