I’m starting a new project and plan on using nhibernate. I’m struggling with whether or not I should keep my domain model clean of persistence information by leaving out foreign keys. I keep feeling like some of my ‘model’ isn’t really necessary and that performance is going to be an issue. For example:
In my db I have the following table:
Posting Id StatusId ...
Which has an FK relationship with this table:
PostingStatus Id Name
In my model I’ve defined 2 classes:
class Posting { virtual int Id { get; set; } virtual PostingStatus Status { get; set; } // .. } class PostingStatus { virtual int Id { get; set; } virtual string Name { get; set; } }
Does PostingStatus belong in my model? and in cases where I know the FK ahead of time, like updating a posting after a submit, isn’t it a pretty heavy performance hit (or just useless work) to have nhibernate fetch a PostingStatus instance instead of just setting a FK?
I’m pretty sure this issue has been discussed before but I keep finding bits an pieces of the discussion that have shotty relevance. Thoughts or resources on this issue would be greatly appreciated.
If the Domain Model requires relationships to be enforced then you need Foreign Keys.
Don’t worry about performance until you actually have a performance problem.