我是NHibernate / FluentNHibernate的新手。我现在使用FNH进行编码,因为我觉得它更容易使用。但是,我正在使用一些用NHibernate编写的现有代码库。今天我在代码中发现了一个错误,数据库未按预期更新。大约30分钟后,我发现我没有更新映射xml,即使我添加了一个新的类变量 - 因此表中的行没有得到更新。我的问题是,有没有办法轻松地用NHibernate识别这种不完整的映射,以便在出现问题时我不必手动检查映射?如果我正在更新一个没有映射的任何字段的非默认数据的对象,那么是一条警告消息?
答案 0 :(得分:3)
看看FluentNHibernate中的PersistenceSpecification类:http://wiki.fluentnhibernate.org/Persistence_specification_testing
如果对你的系统有意义的话,你可以用反射来包装它来测试每个属性。
答案 1 :(得分:1)
您还可以尝试使用NHibernate映射元数据,并通过UnitTest中的反射搜索未映射的属性。
通过使用Metatdata,如果您使用流畅的nhibernate或其他方法来创建nhibernate映射,它对您的应用程序是透明的。
如果您在UnitTests中测试映射,您将在测试期间知道,如果您的映射没有问题,则不会在应用程序启动期间知道。
答案 2 :(得分:0)
数据库未更新的错误可能是由未映射的字段/属性以外的问题引起的。可能存在使用反射无法捕获的其他映射错误。如果您使用错误的级联或错误的发电机怎么办?还是忘了关联映射?
如果要捕获大多数映射问题,则应创建一个针对实际或内存数据库执行的集成测试。这种方法的良好概述是here。