使基于Nhibernate的DAL混淆友好

时间:2009-05-01 06:20:23

标签: c# nhibernate obfuscation orm

我希望模糊使用NHibernate编写的数据访问层。问题是,映射是在XML文件中完成的,这些文件作为资源嵌入到类库中 - 这意味着映射是明文的。

使用两种可能的解决方案: 1. Nhibernate Mapping属性(NHMA)映射到decorat ethe实体(因此,当混淆代码运行时,NHibernate会将其映射到混淆的类名) 2.流畅的NHibernate(再次,映射是在代码中,所以混淆应该不是问题 - 我想)。

现在,如果我们使用HQL来执行查询,这两个解决方案都不会起作用 - 因为查询会引用原始类和字段/属性名称!

有解决方案吗?我们可以在NHMA / Fluent映射中使用别名的类/属性名称吗?

如果我们将HQL查询转换为使用NHibernate Criteria API,那么Criteria API会以某种方式提供帮助吗?

(我知道混淆的好处和缺点/徒劳无益及其有用的目的 - 所以这个问题根本不是要讨论这个问题。换句话说,请不要担心讨论'为什么'我想要这样做!)

谢谢,

克里希纳。

2 个答案:

答案 0 :(得分:1)

我能想到的唯一解决方案是将Linq用于NHibernate。目前它是NHibernate Contrib Project的一部分,并不完全稳定。它将成为NHibernate 2.1版本的一部分,该版本目前具有“Alpha”状态,并且很快就会稳定相当

对于映射,我会使用Fluent NHibernate。由于Linq和Fluent NHibernate都使用Lambda表达式,因此它应该使用模糊处理。

答案 1 :(得分:0)

NHibernate Configuration对象非常灵活。致电:

var lConfig = new Configuration();
lConfig.AddXmlString("whatever xml with config");

您可以从任何来源添加字符串。这意味着您的xmls可以在程序集中加密,并在配置NH时解密。

但如果您只是在混淆之后,我认为Fluent NH是您的首选工具。