C# NHibernate动态创建/更改/删除表
我知道NHibernate是一种ORM,它通常不用于创建表,但我也知道NHibernate能够在给定一些映射的情况下创建整个数据库 我想知道是否有一个模糊的API可以用来动态创建/更改/删除表。我可以用ADO.Net来实现这一点,但我想抽象出为不同数据库(MS SQL、MySQL等)创建表的代码C# NHibernate动态创建/更改/删除表,c#,sql,nhibernate,C#,Sql,Nhibernate,我知道NHibernate是一种ORM,它通常不用于创建表,但我也知道NHibernate能够在给定一些映射的情况下创建整个数据库 我想知道是否有一个模糊的API可以用来动态创建/更改/删除表。我可以用ADO.Net来实现这一点,但我想抽象出为不同数据库(MS SQL、MySQL等)创建表的代码 精度1:CreateSQLQuery的问题是,我必须重写为不同的SQL服务器(MS SQL、MySQl等)创建表的方法。它没有ADO.Net的优势。当NHibernate根据它为任何SQL Server
精度1:CreateSQLQuery的问题是,我必须重写为不同的SQL服务器(MS SQL、MySQl等)创建表的方法。它没有ADO.Net的优势。当NHibernate根据它为任何SQL Server生成的映射生成数据库时。。。这就是我要找的。NHibernate从映射生成数据库时执行的代码是什么。。。此代码可用/公开吗?没有用于动态创建/更改/删除表的特定API。根据您需要执行的操作以及您希望这些操作发生的时间,您有以下选项:
- 在生成模式之后,使用xml映射文件中的标记在数据库上执行您想要的任何操作
- 在映射文件中使用命名查询和创建要从代码运行的SQL语句。(我从未用create/alter/delete table命令尝试过这些命令,但值得一试)
- 使用Session.CreateSQLQuery()方法执行本机SQL命令。(与前面的选项一样,我从未尝试过使用create/alter/delete table命令,但我认为值得一试)
我使用这个“API”动态生成表。您可以使用schema对象。
您需要配置NHibernate并使用模式对象调用create。这两个布尔值要么删除数据库并重新创建它,要么只是将其输出到控制台。 VB.Net
请阅读我在问题中添加的评论1,了解更多关于我所寻找的内容的详细信息。人们为什么要做这些事情?这与NHibernate的目的相反。
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