+1
On Sun, Sep 29, 2013 at 11:01 AM, Oskar Berggren <[email protected]>wrote: > To give short and quick answer: Ususally I would expect my domain model to > be unaware oh NHibernate or any other persistence mechanism. Instead of > passing the ISession, it's better to pass the required repository > interfaces to a domain class, since the repository interfaces in my view > are part of the domain model (but not the repository implementation). For > logic that won't fit nicely inside a domain model class, I would normally > use a domain service class to orchestrate the algorithm between the > involved model classes. > > The repository implementation itself should not contain logic beyond that > of simple store/retrieve/query (and for complex queries it might be better > to use a query object). > /Oskar > > > > 2013/9/28 mg <[email protected]> > >> Hi, >> What is the proper place to put business some more complex business logic >> which requires access to other Models, not only the one on which the >> operation is being executed? >> *Are there any open-source projects which uses a bit of business logic >> and could be a good example?* >> >> To make myself clear: all the examples of business logic I've found are >> very simple ones, like *class Person *with calculated property *FullName >> *which is just a getter: FirstName + " " + LastName, or calculating >> Person's Age by theirs BirthDate field. >> >> Now I need some more complex logic, for example to calculate the *Invoice >> * amount based on today's *PricingPlan* model which is separate model. >> Where should I implement methods like this? Is the Repository pattern >> supposed to be place for this methods? >> Or is it OK to implement these methods in the class it is logically >> related to, just passing the ISession instance to the method, like so: >> >> class Invoice >> { >> // ... >> public void CalculatePrice(ISession dbSess) >> { >> var pricePlan = dbSess.Get<PricingPlan>(...); // >> } >> } >> >> I come from python/django background, and there's no such problem, since >> the db connection/session management is hidden away from user. >> >> Best regards >> MG >> >> -- >> 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 post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/nhusers. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > 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 post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/nhusers. > For more options, visit https://groups.google.com/groups/opt_out. > -- 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 post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/groups/opt_out.
