In our product, some clients require customizations that may even regard
validation. For instance a client wants to validate name and productcode
for a product, another wants just the name. To be able to do this kind of
customizations, we use the Windsor Ioc container and our business services
are injected with the custom validators:
public class ProductBusinessService
{
public ProductBusinessService(ProductValidationService validator)
{
this.validator= validator;
}
...
public void Save(Product p)
{
validator.Validate(p);
p.Save();
}
}
Our validation service, is a rewrite of
ActiveRecordValidationBase.CollectValidators, that does collect the
validators from the persistent class, but can also have others added to it:
public Product:ActiveRecordBase
{
[Property,ValidateNotEmpty]
public string Name
{
get...
set...
}
[Property]
public string ProductCode
{
get...
set...
}
}
and for the two clients:
Client1:
public class ProductValidationService:BaseValidationService
{
public ProductValidationService()
{
}
}
Client 2:
public class ProductValidationService:BaseValidationService
{
public ProductValidationService()
{
this.AddValidator(new NotEmpty("ProductCode"));
}
}
That is what we did faced with the problem presented above, where the
validators in the model weren't enough.
Thanks,
Dan Bunea
http://danbunea.blogspot.com
On Thu, 15 Jun 2006 15:40:20 +0400, Craig Neuwirt <[EMAIL PROTECTED]>
wrote:
> I know AR promotes validation within the model. If you don't use AR, do
> you
> usually still put validation in your models or directly in the Business
> services or create a separate validation service. Just curous
>
>
> On 6/12/06, hammett <[EMAIL PROTECTED]> wrote:
>>
>> Clarifying:
>>
>> - with or without AR I create a DA layer.
>> - I usually work with models. If I'm using AR then AR entities are my
>> models. I just don't like invoking FindAll, or Create on the
>> presentation layer, instead I use a service layer that is aware of
>> business rules and its implications, so if later I have to add some
>> logic say, everytime a Customer is created, I just need to change one
>> place
>> - The only time I've used a dataset was to process some reports, where
>> the columns and aggregated columns were somewhat dinamically, and
>> more, the report was generated by a windows service to be viewed
>> later. For that situation only, DS was perfect. :-)
>>
>> On 6/12/06, Craig Neuwirt <[EMAIL PROTECTED]> wrote:
>> >
>> > One last ? on this thread. If you know you are not going to use AR,
>> would
>> > you still create your Domain Model as AR Entities, or just pass POCO
>> (or
>> a
>> > DataSet) to your DA Layer.
>> >
>> > thanks for your feedback
>> >
>> >
>> > On 6/12/06, hammett <[EMAIL PROTECTED]> wrote:
>> > >
>> > Yep.
>> >
>> > On 6/12/06, Craig Neuwirt <[EMAIL PROTECTED]> wrote:
>> > > Gotcha!, but you do pass the AR objects to your DA layer interface.
>> >
>> > --
>> > Cheers,
>> > hammett
>> > http://hammett.castleproject.org/
>> >
>> >
>> > _______________________________________________
>> >
>> > CastleProject-users mailing list
>> > [email protected]
>> > https://lists.sourceforge.net/lists/listinfo/castleproject-users
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > CastleProject-users mailing list
>> > [email protected]
>> > https://lists.sourceforge.net/lists/listinfo/castleproject-users
>> >
>> >
>> >
>>
>>
>> --
>> Cheers,
>> hammett
>> http://hammett.castleproject.org/
>>
>>
>> _______________________________________________
>> CastleProject-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/castleproject-users
>>
--
Dan Bunea
http://danbunea.blogspot.com
_______________________________________________
CastleProject-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/castleproject-users