当我映射具有System.Type类型属性的实体时,我知道NHibernate将此映射到DbType.String,保存程序集限定名称,我可以在表中看到类型列包含类似“ TarkusSoftware.Abstract.ITask,TarkusSoftware.Abstract,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null“。
这对于长期开发意味着什么,当我们最终将汇编版本更改为2.0.0.0时会发生什么?我认为NHibernate将无法保湿对象,因为它无法找到具有其程序集限定名称的类型。在这种情况下,应该如何继续映射System.Type以确保将来的兼容性?谢谢:))
答案 0 :(得分:3)
这可能是正确的。您可以实现自己的IUserType以更好地控制。
我刚检查了NH源,你是对的。它只使用类型和程序集名称,忽略版本等。如果有兴趣,请检查以下代码: TypeNameParser.Parse()