The "Gender" list is persistent ?

2009/2/9 Dathan <[email protected]>

>
> Thanks for the reply!
>
> The list is, as you surmise, for UI drop-down population, but also for
> run-time validation.  I'd rather validate the value of the Gender
> property immediately (via either Dictionary.ContainsKey() or List.Find
> (), as you suggest) than waiting for NHibernate to throw an error when
> I try to serialize the entity back to the data store (I'm an NH
> newbie, so please correct me if I'm wrong about the behavior in this
> regard).  I'm open to advice on best practices, though, if this is the
> wrong way to go about it.
>
> Given that a list of valid genders is also of use in data validation
> (which seems to be very much a domain concern, rather than strictly a
> UI concern), not just UI control, it seems logical to me that embedded
> in the person entity is an appropriate place for this information.  I
> take it this is contrary to DDD / MVC / other best practices?
>
> ~Dathan
>
>
> On Feb 9, 3:33 pm, Jason Meckley <[email protected]> wrote:
> > why does the person entity have a static list of genders? if it's just
> > for UI dropdown list selection, this can, and should, be done outside
> > to scope of the person entity.
> > I would also recommend using 2nd level cache for memory storage of the
> > gender list rather than a static list. and I would recommend waiting
> > on implementing the cache until
> > 1. preformance is a documented and measurable issue
> > 2. the problem is loading the genders and not another issue (select n
> > +1 or unrestricted list results).
> >
> > the person entity would just have a Gender property which you would
> > get;set; to a Gender field. no need for a dictionary of genders within
> > the person entity. also, if you are going to keep a collection on any
> > entity. use IList<T>, in this case IList<Gender>. key, value
> > containers do not express intent and the same functionality can be
> > gained using list.Find(predicate).
> >
> > On Feb 9, 12:45 pm, Dathan <[email protected]> wrote:
> >
> > > I'm considering porting my existing DAL to NHibernate instead.  But
> > > I've been reading the documentation, and there's one feature of the
> > > way my object model currently works that I haven't figured out an
> > > elegant way to do using NHibernate yet.
> >
> > > Say I'm representing a person.  That person has a Gender property.  In
> > > the database, that gender property is a foreign key to
> > > GenderTbl.GenderId, and GenderTbl.Gender holds the string that
> > > describes the person's gender.  What I'm doing currently is having
> > > something like the following:
> >
> > > public class Person
> > > {
> > >     private string gender;
> > >     private static Dictionary<string, int> genderDict;
> > >     private static IList<string> genderList;
> > >     .
> > >     .
> > >     .
> > >     public string Gender
> > >     {
> > >         get
> > >         {
> > >             return gender;
> > >         }
> > >         set
> > >         {
> > >             if (!genderDict.ContainsKey(value))
> > >                 throw new ArgumentException("Invalid gender");
> > >             gender = value;
> > >         }
> > >     }
> >
> > >     public IList<string> GenderList
> > >     {
> > >         get
> > >         {
> > >             return genderList;
> > >         }
> > >     }
> >
> > > }
> >
> > > My DAL initializes Person.genderDict and Person.genderList to reflect
> > > the contents of GenderTbl -- genderDict is used to lookup the primary
> > > key of a gender when the Person is serialized back to the database
> > > (there's a UNIQUE constraint on GenderTbl.Gender, so this reverse
> > > lookup will be valid).  I could just as easily do something like:
> > > private int gender;
> > > private Dictionary<int, string> genderForwardDict;
> > > private Dictionary<string, int> genderReverseDict;
> > > public string Gender
> > > {
> > > get{ return genderDict[gender];};
> > > set{ if (!genderReverseDict.ContainsKey(value)) throw new
> > > ArgumentException(); else gender = genderReverseDict[value];}
> >
> > > }
> >
> > > And I'd be fine with that.  What I haven't figured out is how to get
> > > NHibernate to populate a static list of the legal values for the
> > > gender field (genderDict).  Or is there some other way to do this that
> > > I'm missing?  Specifically, I do this so view-related controls can
> > > bind to the list of legal values so the user can select from a combo
> > > box rather than having to perform a search every time or type in a
> > > string, etc.
> >
> > > Thanks!
> >
> > > ~Dathan
> >
> >
> >
>


-- 
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]
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to