我刚刚问过here是否有通用的方法来获取表名并在数据库上创建表。
我需要这个,因为我的应用程序连接到数据库并具有一些基本的数据库版本功能,例如使用向导创建表。但现在我希望用户能够从一系列可能的数据库引擎中进行选择(现在它只使用Jet引擎)。
大多数人告诉我这是不可能的,我需要创建一个包含每个数据库引擎实现的抽象层。但我刚刚发现NHibernate,在我看来,它为各种数据库引擎生成SQL查询(我不确定是否包含Jet引擎)。所以我的问题是,我可以使用NHibernate来实现这个目标吗?
答案 0 :(得分:1)
是的,只要数据库架构在不同数据库中相同,就可以。
以下是NHibernate(including Microsoft Jet)支持的数据库引擎列表以及使用它们所需的配置设置:
但请注意对不同数据库引擎的支持程度可能会有所不同,因此请务必研究NHibernate可能与您将要使用的特定数据库有关的任何已知问题。
答案 1 :(得分:1)
NHiberate将帮助您解决问题的多db部分。真正的挑战是编辑表格。
我已经使用NHibernate做了类似于你想要的东西,但实现起来很困难,而且难以实现。
因为NHibernate是一个ORM,你首先需要一个类来加载数据,所以你需要先发一个类。然后,您需要生成映射文件以将db列映射到发出的类属性。然后,您可以使用生成的映射文件以及应用程序创建Configuration
所需的所有其他映射文件。最后,您可以使用NH的模式导出功能来生成新表。
正如我所说的那样棘手而且不容易,有点可能。