![]() |
1
2
SQLAlchemy数据库反射可以让您走到一半。你仍然需要声明你的类和它们之间的关系。实际上,您也可以轻松地自动生成类,但是您仍然需要以某种方式命名关系,这样您还可以手动声明类。 设置数据库的代码如下所示:
在生产代码中,您可能希望以某种方式缓存反映的数据库元数据。例如,将其pickle到一个文件:
|
![]() |
2
2
我不喜欢拖放创建数据访问代码。 乍一看,这似乎很容易,但随后您对数据库进行了更改,并必须更新数据访问代码。这就是它变得困难的地方,因为你经常需要重做你以前做过的事情,或者手工编辑拖放设计器创建的代码。通常,当您使用拖放设计器对一个字段映射进行更改时,输出文件中会有不相关的行更改,因此您不能使用源代码控制系统来确认您已进行了预期的更改(并且不能更改任何其他更改)。 但是,每次重新编译代码或更改数据库模式时,必须创建/编辑XML配置文件并不是一件好事,您必须更新映射文件。另外,很难开始映射文件和跟踪看似简单的问题可能需要很长时间。 还有两种选择: 使用类似的代码生成器 CodeSmith 它与许多ORM系统的模板一起提供。当(不是如果)你需要定制输出时,你可以编辑模板,但简单的情况会为你处理。这样,每次更改数据库模式并获得可重复的结果时,只需重新运行代码生成器。 和/或使用Fluent接口(例如 Fluent NHibernate )要配置您的ORM系统,这就避免了对XML配置文件的需要,在大多数情况下,您可以使用命名约定将字段链接到列等。这将很难从拖放设计器开始,但如果您匹配代码或数据库的重构,则从长远来看是值得的。 另一种选择是使用一个模型,从中生成数据库和代码。该模型是您的源代码,并受版本控制。这被称为模型驱动开发,如果您有许多具有简单模式的类,这是非常好的,因为您只需要为每个模式创建一次模板。 |
![]() |
3
0
我听说伊巴提斯很好。当一些公司的程序员团队无法理解Hibernate(时间问题)时,他们会退回到IBattis。 我个人还是喜欢 LIQ2SQL . 是的,第一次有人需要删除和重绘一个表时,看起来工作量太大了,但事实并非如此。保存时不更新类代码的时间确实很痛苦,但您只需控制表并再次将其拖过来。总的翻拍是非常迅速和无痛的。它创建的类非常简单。如果愿意,还可以使用SPforCRUD创建多个表实体。 将SP链接到CRUD类似于EF:只需使用与表相同的参数设置SP,然后将其拖到表上,然后poof,它将匹配数据类型。 很多人不遗余力地把iqueryable从存储库中带走,但是你 可以 限制你 链接 在linq2sql中,所以iqueryable并不太差。 想一想,我想知道是否有办法限制两国关系(以及外方的关系)。 |