This project is read-only.

Requests for the next version! :-)

Oct 23, 2007 at 3:03 PM
Edited Oct 23, 2007 at 5:39 PM
Hi me again!

There are few things i would like to ask you about (and hopefully you will consider putting it in some version (still waiting for the road map :-))

1. Logging: In my projects i always use log4net. You probably do some logging, what do you use? Have you used log4net?

2. Paged results: Have you thought of adding this? Just the other day i was having a big response problem and found the problem in the fact that i got 50.000 rows in result. It would be great to be able to control the results... 'first 50', 'last 50' , 'first 50 where *?' etc. Any thoughts? (See sorting paged results

3. How about security? I would like to be able to have a control over who can select,insert,update,delete etc. See code below (from!

public static EmailAddress GetItem(int id, IPrincipal currentUser)
if (!currentUser.IsInRole("EmailAddressManagers"))
throw new NotSupportedException(@"You're not allowed to call
EmailAddressManager.GetItem when you're not in the
EmailAddressManagers role");
return EmailAddressDB.GetItem(id);

4. Caching: im not sure if this belongs here. Maby it should just be implemented in project_name.Web? Thoughts?

I realy think that wen you have added validation (and hopefully these four things) i would consider your template/framework just about perfect for me to start using it. Thank you again... hopefully you have time to look over my bable... :-)
Nov 6, 2007 at 2:40 AM
I'd just like to offer a couple of additional topics for discussion/future versions:

1) LoadByForeignKey() methods on generated objects to load a collection of objects based on keys and unique contraints defined in the database. netTiers has done a failry nice job of this and it can come in very handy when loading a parent record with a bunch of children.

2) DeleteByPrimaryKey() and DeleteByUniqueKey() methods that would do the same as the current load and delete call all in one statement.

3) I would love to see a slightly better seperation of BLL and DAL code within a project. I typically have a single "component" project that has two primary folders and classes for each within them. For example, a UserBll.LoadByMyFilters() would call UsersDal.LoadByFilters(). The Dal method would do my connection to SQL and load a datatable and retiurn it to the business layer and then up to the presentation layer. Just a thought.....

4) Logging and caching sound goo to me as well. :) I have also used log4net in the past. A homegrown solution that is configurable to log to email/event viewer/sql would be just fine and probably easier to configure. Sometimes I felt that log4net had a few too many quirks.

Nov 6, 2007 at 1:45 PM

Can you explain the LoadByForiegnKey() methods? We do generate those types of method automatically. Take Customers and Orders as an example. The Customer entity will have a property for Orders, which will populate itself by calling Order.GetOrdersByCustomer(), and the Order entity will have a property called Customer, which will retrieve the customer for that order. We also have Delete methods generated as well - are you asking for deletes that are recursive?

We purposely combined the BLL and DAL layers because it was a one-to-one mapping between the two layers, which just seemed like extra overhead for us.

We are meeting next week to put together a road map and hopefully start to set a rough date for the next release, as well as some guestimates to future releases. Logging, caching, and paging are on our list to discuss. We'll provide more information about that once we have it figured out.

Thanks for the feedback!
Nov 20, 2007 at 9:54 AM
Just wondering how the meeting went? :-)

Now with VS2008 and .net 3.5 out it would be great to know what you are thinking about doing (road map)! Look forward hearing from you!
Nov 20, 2007 at 2:11 PM

The meeting went well, and I think you'll be pleased with a few of the new features we are planning. I will put up a road map soon, but in the mean time, you can go to the Releases, and view the issues tied to version 3.0 and 4.0.