Thanks for the reply. My solution contains no references to System.Threading.Tasks.Task, so I think that is not the cause.
On Thursday, April 16, 2015 at 5:16:55 AM UTC-7, Gustavo Ringel wrote: > > Maybe at same place you used .net Task class instead of your class? > > Gustavo. > > On Thu, Apr 16, 2015 at 1:36 AM, brainbolt <[email protected] > <javascript:>> wrote: > >> I'm accustomed to seeing "No persister for:" errors when I don't have a >> class map defined for one of my classes, but not for an internal NHibernate >> class. >> >> I'm the getting this exception when I attempt to access the Tasks collection >> defined in the following relationship. It doesn't make a difference if the >> collection is eager or lazy loaded, except that if it is lazy loaded, the >> exception isn't thrown until I try to access the collection, so it seems >> that the exception is the result of NHibernate trying to query for the >> collection. >> >> I'm using the Fluent API for the mappings, but I've included the >> resulting hbm.xml file below. >> >> *TaskContainer* (base class) >> >> public abstract class TaskContainer : DomainObject{ >> public virtual IList<Task> Tasks { get; set; }} >> >> *Task* >> >> public class Task : TaskContainer{ >> public virtual TaskContainer TaskContainer { get; set; } >> public virtual string Description { get; set; } >> >> public virtual void AddChildTask(Task childTask) >> { >> if (Tasks == null) >> { >> Tasks = new List<Task>(); >> } >> >> childTask.TaskContainer = this; >> Tasks.Add(childTask); >> } >> >> public static Task Get(int id) >> { >> return Get<Task>(id); >> }} >> >> *TaskMap* >> >> public class TaskMap : ClassMap<Task>{ >> public TaskMap() >> { >> Id(x => x.Id); >> Map(x => x.Description); >> ReferencesAny(x => x.TaskContainer) >> .EntityIdentifierColumn("TaskContainer_Id") >> .EntityTypeColumn("TaskContainerDiscriminator") >> .IdentityType<int>() >> .AddMetaValue<Task>("Task"); >> HasMany(x => x.Tasks) >> .KeyColumns.Add("TaskContainer_Id", "TaskContainerDiscriminator") >> .PropertyRef("TaskContainer") >> .Not.LazyLoad(); >> }} >> >> *Exported hbm.xml map* >> >> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-cascade="all"> >> <class xmlns="urn:nhibernate-mapping-2.2" lazy="false" >> name="CubeNet.Service.DomainObjects.Task, CubeNet.Service, Version=1.0.0.0, >> Culture=neutral, PublicKeyToken=null" table="`Task`"> >> <id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, >> Culture=neutral, PublicKeyToken=b77a5c561934e089"> >> <column name="Id" /> >> <generator class="identity" /> >> </id> >> <bag name="Tasks"> >> <key property-ref="TaskContainer"> >> <column name="TaskContainer_Id" /> >> <column name="TaskContainerDiscriminator" /> >> </key> >> <one-to-many class="CubeNet.Service.DomainObjects.Task, >> CubeNet.Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> >> </bag> >> <property name="Description" type="System.String, mscorlib, >> Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> >> <column name="Description" /> >> </property> >> <any id-type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, >> PublicKeyToken=b77a5c561934e089" meta-type="System.String, mscorlib, >> Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >> name="TaskContainer"> >> <meta-value value="Task" class="CubeNet.Service.DomainObjects.Task, >> CubeNet.Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> >> <column name="TaskContainerDiscriminator" /> >> <column name="TaskContainer_Id" /> >> </any> >> </class></hibernate-mapping> >> >> Saving records with this configuration works as expected and produces the >> following table with these records >> >> Id Description TaskContainerDiscriminator TaskContainer_Id-- ----------- >> -------------------------- ----------------1 Parent task NULL >> NULL2 Child Task Task 1 >> >> Retrieving the either record works, but the exception is thrown when >> attempting to access the collection of child records. >> >> -- >> 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] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> 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.
