我问过如何在 SQL Server 中使用视图时注入存储过程支持。
使用数据库视图时如何在 NHibernate 中使用存储过程进行创建/更新
这是一个映射文件:
<sql-insert>
exec sp_cycle_insert ?,?,?
</sql-insert>
<sql-update>
exec sp_cycle_update ?,?,?,?,?,?
</sql-update>
<sql-delete>
raiserror ('Cycle can not be deleted', 10, 1)
</sql-delete>
所以,我已经完成了重构等,并且我运行了我的测试....都失败了。
原因是 SQL Server 具有视图和存储过程,而每次运行测试时,我都会从头开始设置数据库:
new SchemaExport(configuration).Execute(false, true, false);
我想到了可能的解决方案,这里有:有没有办法:
- 使用数据库所需的东西(如存储过程、视图等)运行其他脚本(我想这是解决方案)
另一方面,运行脚本可能会失败(目前我使用 sdf 文件,但如果我将来更改为不同的提供程序怎么办?)。此外,过程/视图使用WITH构造以及测试期间使用的数据库不支持的一些SQL Server 2005 函数。
- . 所以我认为是时候模拟存储库了。但在这里我也看到了障碍:视图计算一些只读属性,NHibernate 使用以下方法访问支持字段:
access="nosetter.camelcase"
如果我切换到模拟存储库,我将负责在代码中实现视图的逻辑。还有其他解决方案吗?还是我有大麻烦!?