如何防范NHibernate不完全映射
本文关键字:映射 不完全 NHibernate 何防范 | 更新日期: 2023-09-27 18:24:10
我是NHibernate/FluentHibernate的新手。我现在使用FNH进行编码,因为我发现它更容易使用。然而,我正在使用一些现有的代码库,这些代码库是用NHibernate编写的。今天我在代码中发现了一个错误,数据库没有按预期更新。大约30分钟后,我发现即使添加了一个新的类变量,我也没有更新映射xml,所以表中的行没有得到更新。我的问题是,有没有一种方法可以用NHibernate轻松识别这种不完整的映射,这样我就不必在出现问题时手动检查映射了?即,如果我正在更新一个对象,该对象具有未映射的任何字段的非默认数据,则会发出警告消息?
看看FluentHibernate中的PersistenceSpecification类:http://wiki.fluentnhibernate.org/Persistence_specification_testing
如果这对您的系统有意义的话,您可以使用反射来测试每个属性。
您还可以尝试使用NHibernate映射元数据,并通过UnitTest中的反射搜索未映射的属性。
通过使用Metatdata,如果您使用fluent nhibernate或其他方式创建nhibernat映射,那么它对您的应用程序是透明的。
如果您在UnitTests中测试映射,您将在测试期间而不是在应用程序启动期间知道映射是否正常。
这个问题似乎是相关的,这显示了如何查询元数据。
数据库未更新的错误可能是由未映射字段/属性以外的问题引起的。使用反射可能无法捕捉到其他映射错误。如果您使用了错误的级联或错误的生成器,该怎么办?或者忘记了关联映射?
若您想了解大多数映射问题,您应该创建一个集成测试,该测试将针对真实数据库或内存中的数据库执行。这里对这种方法进行了很好的概述。