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
--~--~---------~--~----~------------~-------~--~----~
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