Linq2sql泛型增删改查

      linq2sql常规的增删改查方法如下

Code

      所有实体类都是采用这样的一个方法,这样的好处在于所有的类和属性都是强类型,只要映射实体的属性与数据库保持同步,就不会出现sql语句层面的错误。但是如果在大型项目中应用,需要维护的实体类超过一定数量,数据访问层写这些基本的方法都会是一个非常庞大的工作,以后的维护升级也会是非常困难的事情。能不能将这些常用的方法封装起来,变成一个可通用的方法。经过研究,发现利用泛型方法可以实现。这些代码可以放在数据访问层中,实现代码如下

Code

      其实也可以利用动态扩展方法,将这些方法作为DataContext类的扩展,干净的注入DataContext。动态扩展方法是C#3.0的新特性,Dynamic的类库也是使用这个方式来扩展IQueryable,如通lamda表达式一般,非常的优雅和精妙。

 public static class EntityExtension
    {
        
public static bool Save<T>(this DataContext ctx,T t) where t : class
        {
            
//实现部分与之前类似
        }
    }

 

posted @ 2009-06-22 14:57  Yu Wang  阅读(773)  评论(2编辑  收藏  举报