C 社区里有非常强大的ORM(如Entity Framework)和一些封装了SQL操作的库。这些工具本身是好的,可以极大地提高开发效率。但是,很多人为了追求“一次编写,到处运行”的效果,或者为了快速迭代,在DAL层就过度依赖ORM的特性,甚至将ORM的查询语法直接写到业务逻辑层,或者将ORM的Model直接传递到表现层。
C 作为一门功能强大的面向对象语言,其类型系统、泛型、LINQ等特性,使得在同一个类中实现复杂逻辑成为可能。这在一定程度上可能“诱导”开发者将原本应该分散到不同层级的逻辑,集成到少数几个类中,尤其是在DAL层,可以直接用LINQ实现复杂的查询和过滤,这看起来很“简洁”,但却模糊了业务逻辑与数据访问的边界。