经常更改的数据库的最佳.NET解决方案

ses*_*ker 8 .net database change-management

我目前正在构建一个小型CRUD应用程序.他们的数据库非常混乱,并且在接下来的6个月到一年的时间里会经常变化.你会为我的数据层推荐什么:

1)ORM(如果是,哪一个?)

2)Linq2Sql

3)存储过程

4)参数化查询

我真的需要一个足够动态的解决方案(既快又简单),我可以替换表并经常添加/删除列.

注意:我对ORM没有太多经验(只有一点SubSonic),并且通常倾向于使用存储过程,所以这可能是最佳选择.我很想学习Ling2Sql或NHibernate,如果要么允许我上面描述的情况.

lom*_*axx 6

这里要注意的一件重要事情是,如果数据库模式经常更改,您希望具有某种程度的编译时类型安全性.我发现这是NHibernate的一个问题,因为它使用xml映射文件,所以如果你在数据库模式中改变一些东西,你就不知道直到运行时映射被破坏了.

这也是存储过程的问题.

使用Linq2Sql可以让您在编译时更改模式时知道代码的确切位置.对我而言,如果我正在使用频繁更改的架构,那么它将优先于其他所有内容

  • 流畅的NHibernate可以轻松编写集成测试,检查您的映射是否正确.您可以使用内存数据库来加快速度. (3认同)
  • 使用linq2sql会对你的孩子施加诅咒.你所有的家人都将死于设计师所造成的可怕的死亡. (2认同)

Jon*_*way 5

我将使用构建提供程序(网站项目)设置来查看SubSonic.这很好用,因为它会在每次构建项目时自动重新生成DAL对象,因此如果数据库以破坏代码的方式更改,则会出现构建错误.

它运行良好,直到数据库模式变得非常复杂并且我们达到了ActiveRecord模式的限制,但只要模式不是非常复杂,它就能很好地工作.架构稳定后,您可以进行切换,以便在需要时只构建DAL.