- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
鉴于以下要求,我正在尝试利用 ORM:
1) 使用 .NET Framework(最新的 Framework 没问题)
2) 必须能够交替使用Sybase、Oracle、MSSQL
3) 架构大部分是静态的,但也有动态部分。
我对 SubSonic 和 NHibernate 有点熟悉,但并不深入。
我有一种挥之不去的感觉,即 ORM 可以做我想做的事,但我现在不知道如何利用它。
SubSonic 可能不是最佳选择,因为它目前不支持 Sybase,而且我现在没有资源和能力为它编写自己的提供程序。
对于 #3(上图),有几个元数据表,它们描述了供应商可以“钉在”现有数据库上的表。
我们称这些为 MetaTables 和 MetaFields。
有一个基本的静态模式,ORM (NHibernate ATM) 可以很好地处理它。
但是,供应商可以(物理地)向数据库添加表,只要他们还将数据添加到元数据表以描述其结构。
我真正想要的是能够以某种方式(以它理解的方式)为 ORM“提供”该元数据,并让我能够在此时操作数据。
我的主要目标是减少我必须在这些动态表上执行的通用 SQL 语句构建量。
我还想避免担心发送到 Sybase、Oracle 或 MSSQL 的 SQL 的差异。
我的主要问题是我没有办法让 ORM 知道动态表直到运行时,那时我可以访问元数据
编辑:用法示例可能类似于 outlined here :
IDataReader rdr=new Query("DynamicTable1").WHERE("ArbitraryId",2).ExecuteReader();
(但是,SubSonic 似乎无法工作,因为没有 Sybase 提供程序(见上文)
最佳答案
根据这个博客,您实际上可以使用 NHibernate with dynamic mapping .虽然需要一些调整......
关于c# - 我如何将 ORM 用于架构在运行时之前未知的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/136366/
我是一名优秀的程序员,十分优秀!