+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.

Reply via email to