gpt4 book ai didi

c# - 我如何将 ORM 用于架构在运行时之前未知的数据库?

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:04 24 4
gpt4 key购买 nike

鉴于以下要求,我正在尝试利用 ORM:

1) 使用 .NET Framework(最新的 Framework 没问题)
2) 必须能够交替使用Sybase、Oracle、MSSQL
3) 架构大部分是静态的,但也有动态部分。

我对 SubSonic 和 NHibernate 有点熟悉,但并不深入。
我有一种挥之不去的感觉,即 ORM 可以做我想做的事,但我现在不知道如何利用它。

SubSonic 可能不是最佳选择,因为它目前不支持 Sybase,而且我现在没有资源和能力为它编写自己的提供程序。

对于 #3(上图),有几个元数据表,它们描述了供应商可以“钉在”现有数据库上的表。
我们称这些为 MetaTablesMetaFields

有一个基本的静态模式,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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com