Should I use a hand-written schema for my projected developed in a high-level language (such as Python, Ruby) or should I let my ORM solution auto-generate it? Eventually I will need to migrate without destroying all the data. It s okay to be tied to a specific RDBMS but it would be nice if features such as constraints and procedures could be supported somehow.
ORM:手写模式还是自动生成?
原标题:
最佳回答
我从不使用ORM生成的模式。
我发现ORM想要生成模式的方式通常与我想要的数据库结构化方式完全不一致。此外,我知道这是微不足道的,命名方案通常很糟糕。
数据库结构有自己的约束,我发现ORM自动生成工具通常没有充分考虑这些约束。如果您以后想要在数据库上运行报告(并且您会这样做),那么拥有良好的数据库结构和设计是非常重要的。
问题回答
请参阅这篇《编码恐怖》文章以及关于您最终需要进行的迁移的讨论链接。现在就计划好。
另请参阅Martin Fowler谈数据库进化;我特别建议将测试数据生成作为数据库设置的一部分。这个想法可能有点不成熟,因为没有清楚地描述不同环境中的不同问题,开发与QA与生产。
让ORM生成它想要的模式。然后,你总是可以改变那些太慢或你想要的不同的事情。但它可以让你快速开始并有一些工作,加上ORM人员通常知道他们在生成模式时会做什么。
让您的ORM解决方案生成它,但不要盲目使用它;通读一遍,检查一下是否理智。
相关问题
热门标签
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding