ASP.NET MVC using an N-Tier Model and DDD
I agree that exposing IRepository&lt;> to the presentation layer is bad.

The reason it's bad is that your Business Logic Tier (BLT) might want to enforce business-y rules on the access of data. That's what the business layer is for, after all.

Your heart is in the right place when you restrict use of the repository to .Where in the presentation layer. However, you still have that entries field exposed for another programmer to come along and abuse later. To prevent this from happening, you could expose only an Expression in the presentation layer. Pass that Expression to the BLT, which would then instantiate the IRepository&lt;> and use the Expression. That would also provide a hook for the BLT to add additional conditions to the Expression for access control, etc.