我知道NHibernate是一个ORM,它通常不用于创建表,但我也知道NHibernate能够在给定映射的情况下创建整个数据库。
我想知道是否存在可用于动态创建/更改/删除表的模糊 API。我可以用ADO.Net做到这一点,但我想抽象为不同数据库创建表的代码(MS SQL,MySQL等)
精度1:CreateSQLQuery的问题在于我必须重写为不同SQL服务器创建表的方法(MS SQL,MySQl等)。它没有ADO.Net的优势。当NHibernate从映射生成数据库时,它会为任何SQL服务器生成...这就是我正在寻找的。当NHibernate从映射生成数据库时执行的代码是什么...这个代码可用/公共吗?
答案 0 :(得分:1)
是的,你可以:)
您动态创建与要映射的类对应的Type。然后生成映射。
要查看NH源代码的重要类在Nhibernate.Mapping命名空间中:PersistentClass,RootClass。
以下是一个示例: https://nhibernate.info/blog/2008/11/16/mapping-source-how-map-a-class-without-use-nothing.html
我已使用此“API”动态生成表格。
答案 1 :(得分:0)
没有用于动态创建/更改/删除表的特定API。根据您需要执行的操作以及何时需要执行这些操作,您可以选择以下选项:
答案 2 :(得分:0)
您可以使用架构对象 您需要配置NHibernate并使用模式对象调用create。两个布尔值将删除数据库并重新创建它或只是将其输出到控制台。 VB.Net
Public Sub CreateDatabaseSchemaFromMappingFiles()
Dim cfg As New NHibernate.Cfg.Configuration()
cfg.Configure()
Dim schema As New NHibernate.Tool.hbm2ddl.SchemaExport(cfg)
schema.Create(True, False)
End Sub