Yeah... that too :-D Diego
On Thu, Jun 10, 2010 at 20:12, Fabio Maulo <[email protected]> wrote: > Diego. > In that "pattern", did you see a session close ? > > On Thu, Jun 10, 2010 at 6:03 PM, Diego Mijelshon > <[email protected]>wrote: > >> For retrieving associations, the term is "fetching". >> >> With that mapping, NH should be retrieving the "First"* LEAInfo instance >> only, and retrieve the schools only when you iterate the corresponding >> collections. >> >> Your query looks strange too. You are doing .Skip(0).Take(1).First(), >> which is the same as .Skip(1).First()... >> >> Also, the pattern you are using to create the session and factory smells a >> little... I can't say it's wrong because I have no idea about the >> implementation of HttpContextAccess.getSessionVariable. I suggest you >> take a look at the many existing samples and patterns. >> BTW, are you porting something from Java? (because of the camelCase method >> names...) >> >> *: you are not specifying an order, so "first" is whatever the database >> decides is the first row >> >> Diego >> >> >> >> On Thu, Jun 10, 2010 at 17:18, tqwhite <[email protected]> wrote: >> >>> Do we use a different word than "cascade" to refer to the depth of >>> associations retrieved? It seems a natural inverse of the usage when >>> saving. Please advise. >>> >>> According to Visual Studio, I never use the word "lazy" in the entire >>> project. >>> >>> The mapping file is below. Thank you very much for looking at it. I've >>> already killed hours on this. I really need help. >>> >>> tqii >>> >>> <?xml version="1.0" encoding="utf-8" ?> >>> >>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >>> assembly="DatabaseModel" namespace="DatabaseModel"> >>> >>> <class name="DatabaseModel.Models.LEAInfo, DatabaseModel" >>> table="Districts" > >>> <id name="RefId" type="guid"> >>> <generator class="guid.comb"> >>> </generator> >>> </id> >>> <property name="LocalId" column="LocalId" type="string" >>> not- >>> null="false"/> >>> <property name="LEAName" column="LEAName" type="string" >>> not- >>> null="false"/> >>> <property name="LEAURL" column="LEAURL" type="string" not- >>> null="false"/> >>> >>> <bag name="schools"> >>> <key column="LEAInfoRefId"/> >>> <one-to-many class="DatabaseModel.Models.SchoolInfo, >>> DatabaseModel" /> >>> </bag> >>> </class> >>> >>> <class name="DatabaseModel.Models.StudentPersonal, >>> DatabaseModel" >>> table="Students"> >>> <id name="RefId" type="guid"> >>> <generator class="guid.comb"> >>> </generator> >>> </id> >>> <property name="LocalId" column="LocalId" type="string" >>> not- >>> null="false"/> >>> >>> >>> <component name="Name" >>> class="DatabaseModel.Services.BaseDataObjects.NameOfRecordType, >>> DatabaseModel"> >>> <property name="FirstName"/> >>> <property name="LastName"/> >>> </component> >>> <bag name="enrollments"> >>> <key column="StudentPersonalRefId"/> >>> <one-to-many >>> class="DatabaseModel.Models.StudentSchoolEnrollment, DatabaseModel" /> >>> </bag> >>> </class> >>> >>> >>> <class name="DatabaseModel.Models.SchoolInfo, DatabaseModel" >>> table="Schools"> >>> <id name="RefId" type="guid"> >>> <generator class="guid.comb"> >>> </generator> >>> </id> >>> >>> <property name="SchoolName" type="string" >>> not-null="false"/> >>> <property name="LEAInfoRefId" type="string" >>> not-null="false"/> >>> >>> <bag name="enrollments"> >>> <key column="SchoolInfoRefId"/> >>> <one-to-many >>> class="DatabaseModel.Models.StudentSchoolEnrollment, DatabaseModel" /> >>> </bag> >>> </class> >>> >>> >>> >>> >>> <class name="DatabaseModel.Models.StudentSchoolEnrollment, >>> DatabaseModel" table="StudentSchoolEnrollment"> >>> <id name="RefId" type="guid"> >>> <generator class="guid.comb"> >>> </generator> >>> </id> >>> <property name="SchoolYear" column="SchoolYear" >>> not-null="false"/> >>> <property name="EntryDate" not-null="false"/> >>> >>> <many-to-one not-null="false" >>> class="DatabaseModel.Models.StudentPersonal, DatabaseModel" >>> name="student" column="StudentPersonalRefId"/> >>> <many-to-one not-null="false" >>> class="DatabaseModel.Models.SchoolInfo, DatabaseModel" name="school" >>> column="SchoolInfoRefId" /> >>> >>> </class> >>> >>> >>> </hibernate-mapping> >>> >>> >>> On Jun 10, 3:05 pm, Diego Mijelshon <[email protected]> wrote: >>> > What are your mappings? >>> > And what does this have to do with cascading? >>> > Wild guess: you've set everything as lazy="false". >>> > >>> > Diego >>> > >>> > >>> > >>> > On Thu, Jun 10, 2010 at 16:41, tqwhite <[email protected]> wrote: >>> > > I cannot control the cascade depth. No matter what I do, NH retrieves >>> > > the entire object graph and all associations. It stops at some level >>> > > (there is recursion otherwise) though the data is too big and complex >>> > > for me to analyze exactly where. >>> > >>> > > I am presently trying to set the depth to zero (I also tried one) in >>> > > an attempt to get something recognizable to happen. It is not >>> working. >>> > > Can you see what I am doing wrong? >>> > >>> > > This method looks up the root object: >>> > >>> > > public virtual LEAInfo getFirst() >>> > > { >>> > > Orm.startSession(); >>> > >>> > > var dbResult = (from testList >>> > > in Orm.session.Linq<LEAInfo>() >>> > > select testList) >>> > > .Skip(0) >>> > > .Take(1); >>> > >>> > > LEAInfo outObj = dbResult.First<LEAInfo>(); >>> > > return outObj; >>> > > } >>> > >>> > > Orm.startSession creates a static session. It works just like I >>> expect >>> > > it to when I am saving things. Note the use of max_fetch_depth: >>> > >>> > > public static ISession startSession(){ >>> > > if (HttpContextAccess.getSessionVariable("session") == >>> > > null) >>> > > { >>> > > Configuration config = new >>> > > NHibernate.Cfg.Configuration() >>> > > .SetProperty("max_fetch_depth", "0"); >>> > > config.Configure(); >>> > > ISessionFactory sessionFactory = >>> > > config.BuildSessionFactory(); >>> > > ISession newSession = sessionFactory.OpenSession(); >>> > > HttpContextAccess.addSessionVariable("session", >>> > > newSession); >>> > > } >>> > > return >>> > > (ISession)HttpContextAccess.getSessionVariable("session"); >>> > > } >>> > >>> > > Thanks for your help. >>> > >>> > > tqii >>> > >>> > > -- >>> > > You received this message because you are subscribed to the Google >>> Groups >>> > > "nhusers" group. >>> > > To post to this group, send email to [email protected]. >>> > > To unsubscribe from this group, send email to >>> > > [email protected]<nhusers%[email protected]> >>> <nhusers%[email protected]<nhusers%[email protected]>> >>> > > . >>> > > For more options, visit this group at >>> > >http://groups.google.com/group/nhusers?hl=en. >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "nhusers" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]<nhusers%[email protected]> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/nhusers?hl=en. >>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<nhusers%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. >> > > > > -- > Fabio Maulo > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<nhusers%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.
