Hi, I'm writing this post because I'm getting pretty confused about a good way to use ActiveRecord in my projects. I've been using ActiveRecord for some time now in my projects, and I really like it. It's easy to use, frees me from writing all kinds of sql queries and allows me to rapidly start my projects. At the moment, I work alot with the Asp.Net MVC framework, which I also love. I think these two techniques are a fine combination.
Lately however, I begin to experience some problems. As my projects grow in size, and my knowledge and experience expand, I began to think about the right way to use ActiveRecord, and how it should fit in my projects 'Architecture'. At the moment, when I create a project, I create a folder called Models, and I put all my ActiveRecord Model Classes in there (for example Order). From my MVC-controllers, I call the various static methods inside the Models to get objects from the db. (FindAll, FindOne, etc). Depending on my needs, I provide some Expressions to get specific data. When I got my data, I pass it on to my view, fairly simple. As some of you would point out, this isn't a best practice. I sometimes receive the infamous 'No Session' errors, so I began to use ViewModels. This all feels quite natural. The problem is that my current method doesn't feel good anymore. By accessing the AR Models directly from my controllers, it feels tightly coupled and it seems difficult to UnitTest. So I began to read about repositories, data access layers, data access objects and that kind of stuff, and I got pretty lost.. Somehow the use of a repository feel natural (its mockable/fakeable, and this way my program doesn't really know about my ORM, which makes it easy to change to another one), but after reading alot of articles, i'm not so sure anymore (like today I read some aricles by Ayende, saying this is really a YAGNI-point) So my question is really: how should I implement AR in my projects, and how do YOU implement it? Is it a good or bad practice my controllers 'know' about my ORM, should I use Interfaces and repositories? I know there isn't ONE answer to this, and I really know it all depends on the type of projects, but I really hope someone can shed some light on this problem, show me some examples and help me understand better. Kind regards, Paul -- You received this message because you are subscribed to the Google Groups "Castle Project Users" 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/castle-project-users?hl=en.
