This class allows the definition of a CRUD to a linq datacontext and entity in one line that has all the DataAnnotations completed so that ObjectDataSource etc can pick up the class and Insert/Delete/etc methods.

Once included in your code you can define a CRUD for an entity in a datacontext like so

public class MyDataDAL : GenericLinqDAL<TheDataContextTypeName, TheEntityTypeName> { //yes that is it }

Here it is (it's a biggy and a few extensions afterwards + SortableList (and extension to List that can be automatically sorted)