A feature I've seen in a lot of DALs and have used in the past is the ability to pass an entity instance to a search method (e.g., Find(), GetPaged()) in order to pass search parameters. I find this approach particularly elegant, personally, and was surprised not to find it in .netTiers. I would see this being an alternative to using
SqlFilterParameterCollection.
For example, if my data entity object is Product:
Product oProduct = new Product();
oProduct.Name = "A%";
oProduct.DateAdded = "2007-01-01";
TList<Customers> list1 = DataRepository.CustomersProvider.Find(oProduct);
A similar option, with slightly more flexibility, would be to build an [Entity]Search class that inherits from the [Entity] class but implements additional search metadata, such as:
oProduct.Name = "A";
oProduct.NameSearchMethod = ">";
oProduct.DateAdded = "2007-01-01";
oProduct.DateAddedSearchMethod = "<=";
I can see arguments for and against this. Obviously, even with the Search class option this is a bit limited in that it can't support multiple conditions per field. Nonetheless, I don't see it as being terribly difficult to add and it wouldn't break existing code so it would be a definite "nice to have".
Jeremy