I appreciate you taking the time to blog your experience with this
topic :)

/Mark

On Jan 27, 3:35 pm, Markus Zywitza <markus.zywi...@gmail.com> wrote:
> ICriteria relates to Specification like ActiveRecord-types to a domain
> model. ICriteria may resemble a specification, but it is actually a
> query in a fluent API format. If you want to go all the way, then you
> need a real specification model that is used to create queries by the
> repository.
>
> Also, I blogged about my experiences with AR+DDD. You might find it
> useful for your own decision what to do.
>
> http://mortslikeus.blogspot.com/2009/01/active-record-and-ddd.html
>
> -Markus
>
> 2009/1/27 Mark Jensen <don...@gmail.com>:
>
>
>
> > This would actually been my next question :)
>
> > usually I would do the same thing you talk about and encapulate the
> > quiery, but from what I understand with DDD (not saying that this only
> > goes for DDD, i have just never heard before I started on DDD), you
> > are allowed to make this sort methods.
>
> > using the Criterion as a parameter for method like the FindOne(),
> > seems to follow the guideline/rule of the SPECIFICATION Pattern and
> > thereby add flexiblity to the design.
>
> > The argument to us the FindMeSomething(iNeed) and thereby making hard-
> > coded quires, should be that the client would have done this anyway.
> > So it makes sense to make hardcoded quires because they give you some
> > convience
>
> > But the issue with FindMeSomething(iNeed), is that the developer need
> > to understand the inner workings/implications of using a encapsulated
> > metod... meaning that, if they dont know about how the method quiries
> > the database, they might pull to much data into memory and thereby
> > bringing the system down.
>
> > you could probably refactor yourself out of this problem, but still...
>
> > /Mark
>
> > On Jan 26, 3:55 pm, Markus Zywitza <markus.zywi...@gmail.com> wrote:
> >> Code from the article you linked:
>
> >>         public virtual T FindOne(params ICriterion[] criteria)
> >>         {
> >>             return ActiveRecordMediator<T>.FindOne(criteria);
> >>         }
>
> >> This moves the responsibility for creating a particular query from the
> >> repository to the higher layers, who need to know about an aggregate's
> >> inner workings. Once you start to optimize for n+1 etc., this
> >> knowledge of the persistence is rather deepened than encapsulated.
> >> A better approach is to create a bunch of
> >> FindByWhateverMyAppNeeds(string iNeedThat). That's ugly, but
> >> encapsulates persistence within the repository.
>
> >> -Markus
>
> >> 2009/1/26 Mark Jensen <don...@gmail.com>:
>
> >> > Hi Markus
>
> >> > Could you explain the contradictions a bit more for me?
>
> >> > thanks :)
>
> >> > On Jan 26, 1:22 pm, Markus Zywitza <markus.zywi...@gmail.com> wrote:
> >> >> You lose nothing with dropping ActiveRecordBase but convenience.
>
> >> >> But keep in mind:
>
> >> >> 1) AR classes without ARBase make good DTOs, but still bad domain 
> >> >> classes.
> >> >> 2) Generic repositories are an antipattern. A repository should
> >> >> encapsulate the knowledge of an aggregate's persistence details. That
> >> >> contradicts with ready-to-use-plugs for LINQ or criteria queries.
>
> >> >> If you need to do DDD, use AR as DTO and map it to the domain layer.
> >> >> If you are doing this because DDD has a momentary hype, just don't do
> >> >> it at all. The "Domain Model" is not the only enterprise pattern that
> >> >> yields maintainable software.
>
> >> >> -Markus
>
> >> >> 2009/1/26 Mark Jensen <don...@gmail.com>:
>
> >> >> > Hi
>
> >> >> > From what i can read on the internet people do really like this
> >> >> > combination due to the placement of the persitance logic.
>
> >> >> > how ever, i know that Castles AR has something callsed
> >> >> > ActiveRecordMediator which seems to be the solution to the problem
> >> >> > above. (i also know ayendes rhino commons which also have an
> >> >> > implementation of the repository pattern).
>
> >> >> > The questions are.
>
> >> >> > 1. Will i lose something if i stop inheritting from ActiveRecordBase
> >> >> > and use ActiveRecordMediatior instead? (to me it seems like i will get
> >> >> > a lot more functionality/control)
>
> >> >> > 2. Can someone me how to implement the Repository pattern with
> >> >> > ActiveRecordMediator. I have found this example here
> >> >> >http://www.lostechies.com/blogs/johnteague/archive/2008/05/27/using-d...
>
> >> >> > but to me it seems like I would have to make a Repository (and inherit
> >> >> > from BaseRepository) for every Aggregate and then I need to
> >> >> > instantiate the Repository it when i want to use it.
>
> >> >> > Is there a better way of doing this?
>
> >> >> > :)
>
> >> >> > best regards,
> >> >> > Mark
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to castle-project-users@googlegroups.com
To unsubscribe from this group, send email to 
castle-project-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to