2012-02-06 52 views
2

我发现netTiers生成的代码依赖于一个确切的数据库模式,并与变化非常unforgiving。例如,向现有表中添加列 - 如果在表的中间某处添加列,除非重新编译netTiers,否则您将在运行时看到转换错误。这是因为这些列是按顺序而不是按名称访问的。 (通过查看更改日志,我发现这是作为性能改进完成的)netTiers数据库模式向后兼容

这在过去一直没有问题,但在我目前的项目中,我们试图构建一个系统零宕机升级。我们面临的挑战是数据库升级,如果我们能够在不影响代码的情况下更新数据库,这将是一件好事。

有没有人使用netTiers有类似的问题,或看着类似的要求?

将更改模板以通过名称访问列更容忍以前的模式版本?如果是这样,对我来说,我认为这将是值得轻微打击性能(3%在这里引用DataReader ordinal-based lookups vs named lookups

回答

0

正如你所指出的,.NetTiers在DataReader中使用基于序数的查找。获得.NetTiers很好的唯一方法是始终在现有表的末尾添加新列,并且永远不会重构表字段顺序。

通过这样做,您的v1代码仍然可以在表的最后添加一个新列的同时工作,而您的v2代码将与新添加一起使用。