Hi:

I am having a hard time trying to find out where I am making a mistake on 
the NHibernate configuration with the following request solution that I am 
working on. I am trying to achive a relation of one to many between 
requests and notification (1 request can have several notification send). 
Below is the information of how I am facing the solution:

Database Tables

    *CREATE TABLE tbl_requests*
*    (*
*    strID uniqueidentifier NOT NULL,*
*    objRequestDate datetime NOT NULL,*
*    objExpirationDate datetime*
*    ...*
*    CONSTRAINT pk_request PRIMARY KEY (strID)*
*    )*
*    CREATE TABLE tbl_notifications*
*    (*
*    strRequest uniqueidentifier NOT NULL,*
*    objDate datetime NOT NULL*
*    CONSTRAINT pk_notifiations PRIMARY KEY (strRequest, objDate),*
*    CONSTRAINT fk_notificationsrequests FOREIGN KEY (strRequest) 
REFERENCES tbl_requests(strID)*
*    )*

Notification Entity and Mapping

    *public class NotificationEntity : IComparable*
*    {*
*        public virtual RequestEntity objRequest { get; set; }*
*        public virtual DateTime objDate { get; set; }*
*        public int CompareTo(object obj) {...}*
*    }*
*    public class NotificationMap : ClassMap<NotificationEntity>*
*    {*
*        public NotificationMap()*
*        {*
*            Table("tbl_notifications");*
*            CompositeId()*
*                .KeyReference(x => x.objRequest, "strRequest")*
*                .KeyProperty(x => x.objDate, "objDate");*
*            Not.LazyLoad();*
*        }*
*    }*

Request Entity and Mapping

    *public class RequestEntity*
*    {*
*        public virtual Guid strID { get; set; }*
*    public virtual DateTime objRequestDate { get; set; }*
*    public virtual DateTime objExpirationDate { get; set; }*
*        public virtual ISet<NotificationEntity> colNotifications { get; 
set; }*
*    }*
*    public class RequestMap : ClassMap<RequestEntity>*
*    {*
*        public RequestMap()*
*        {*
*            Table("tbl_requests");*
*            Id(x => x.strID).GeneratedBy.Guid();*
*            Map(x => x.objRequestDate);*
*            Map(x => x.objExpirationDate);*
*            HasMany<NotificationEntity>(x => x.colNotifications)*
*                .AsSet()*
*                .Cascade.All()*
*                .KeyColumn("strRequest")*
*                .Fetch.Join()*
*                .Not.LazyLoad();*
*            Not.LazyLoad();*
*        }*
*    }*

Debuging in the console, I find out that when there is an exception with at 
less one notification send, it starts a loop of the following query (I 
replace the fields by * just to make it more readable)

*NHibernate: SELECT * FROM tbl_requests requestent0_ left outer join*
*tbl_notifications colnotific7_ on*
*requestent0_.strID=colnotific7_.strRequest WHERE*
*requestent0_.strID=@p0;@p0 = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx*
*[Type: Guid (0:0:0)]*

*NHibernate: SELECT * FROM tbl_requests requestent0_ left outer join*
*tbl_notifications colnotific7_ on*
*requestent0_.strID=colnotific7_.strRequest WHERE*
*requestent0_.strID=@p0;@p0 = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx*
*[Type: Guid (0:0:0)]*

*...*

I guess it is an error on the mapping which cause the loop, do you know 
what I am doing wrong? I tried replacing the Not.LazyLoad with Lazy ones, 
but same thing happens.

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/nhusers/d4bee251-eeaa-4abf-8083-72eabb14954fn%40googlegroups.com.

Reply via email to