我目前正在构建一个小型CRUD应用程序.他们的数据库非常混乱,并且在接下来的6个月到一年的时间里会经常变化.你会为我的数据层推荐什么:
1)ORM(如果是,哪一个?)
2)Linq2Sql
3)存储过程
4)参数化查询
我真的需要一个足够动态的解决方案(既快又简单),我可以替换表并经常添加/删除列.
注意:我对ORM没有太多经验(只有一点SubSonic),并且通常倾向于使用存储过程,所以这可能是最佳选择.我很想学习Ling2Sql或NHibernate,如果要么允许我上面描述的情况.
这里要注意的一件重要事情是,如果数据库模式经常更改,您希望具有某种程度的编译时类型安全性.我发现这是NHibernate的一个问题,因为它使用xml映射文件,所以如果你在数据库模式中改变一些东西,你就不知道直到运行时映射被破坏了.
这也是存储过程的问题.
使用Linq2Sql可以让您在编译时更改模式时知道代码的确切位置.对我而言,如果我正在使用频繁更改的架构,那么它将优先于其他所有内容
我将使用构建提供程序(网站项目)设置来查看SubSonic.这很好用,因为它会在每次构建项目时自动重新生成DAL对象,因此如果数据库以破坏代码的方式更改,则会出现构建错误.
它运行良好,直到数据库模式变得非常复杂并且我们达到了ActiveRecord模式的限制,但只要模式不是非常复杂,它就能很好地工作.架构稳定后,您可以进行切换,以便在需要时只构建DAL.