sqlite - NHibernate、Sqlite、丢失的表和 IOC 乐趣

标签 sqlite nhibernate structuremap

我正在对使用 NHibernate 实现持久性的类库进行单元测试。 NHibernate 正在使用 Sqlite 内存数据库进行测试。在正常情况下,很容易让 StructureMap 为我踢出一个 session 。

但是,因为我使用内存数据库来提高测试速度,所以我需要在测试期间有一个可用的 session (因为当我创建一个新 session 时它会破坏数据库)。还有另一个皱纹。目前困扰我的案例是测试自定义的基于 NHibernate 的 ASP.NET 成员提供程序。这些显然是每个 AppDomain 创建一次,所以我不应该将 session 注入(inject)其中,原因很明显。

structuremap 中是否有一种方法可以告诉它摆脱特定类型的实例,同时仍然保留告诉它如何实例化该类型的位?真的,如果我能摆脱它,我会让它像 HttpScoped 对象生命周期一样工作,但显然我只能在 Http 请求的上下文中这样做。是否有一种直接的方法来手动控制来自结构图的对象的生命周期?

对于这个问题的长度以及它可能是一个愚蠢的问题的可能性,我深表歉意。我是一个人在这个项目上,所以我真的没有任何人可以交流想法。

最佳答案

您可以将 session 包装在您自己的 ISession 实现中,该实现委托(delegate)给您控制生命周期的真实 session 。然后将您自己的 ISession 注册为实例。

关于sqlite - NHibernate、Sqlite、丢失的表和 IOC 乐趣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12945990/

相关文章:

android - 如何在 setOnItemClickListener 上将 ListView 记录从 sqlite 显示到第二个 ListView

sql - 在自连接字段上执行递归 SQL 查询的最佳方法是什么(以及通过 nhibernate 执行此操作?)

c# - StructureMap 开放通用类型

c# - StructureMap IOC 命名实例帮助

android - 从数据库填充 String 和 ListView

sqlite - 创建SQLite备份工具,需要知道.dump是否是原子的

linq - 如何实现与 EF 和 NHibernate 一起使用的工作单元

linux - 操作错误: attempt to write a readonly database,

c# - NHibernate 4 升级 - 不能同时获取多个包