我有一个项目,我正在使用Fluent NHibernate映射SQL Server数据库,我从另一个Fluent NHibernate映射的SQL Server数据库生成数据,这是我们的源 .
我目前正在编写一些单元测试,用于检查从一个数据库读取的函数并在另一个数据库中创建记录 . 我已经为我的数据库创建了一个用于创建记录的内存中SQLite数据库,它工作正常 . 但是当我尝试为我的“源”数据库创建一个类似的SQLite数据库时,我得到的失败声称“没有这样的表” .
这似乎是因为在源数据库的Fluent NHibernate dll中,他们给出了像“dbo.table”这样的名称,因为我的SQLite测试数据库中没有模式,所以它无法创建测试表 .
有没有办法处理这个“dbo” . 在创建测试数据库时SQLite中的名称?
2 回答
是相同的:
要做到这一点,你需要attach另一个名为
dbo
的数据库,如下所示:或者,将表名包装在引号中(如果可以使用NHibernate),以便该点是表名的一部分:
您可以将委托传递给
SchemaExport.Execute
以修改脚本调用 . 将execute参数设置为false,您可以修改脚本行并自己调用它们:schemaExport.Execute(script => { using (var cmd = session.Connection.CreateCommand()) { cmd.CommandText = script.Replace("dbo.", "dbo_"); cmd.ExecuteNonQuery(); } }, false, false, exportSchemaOutput);
(我假设你已经调用了一个
ISession
对象) .