2

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

有两种可能的解决方案:1. Nhibernate 映射属性 (NHMA) 来装饰映射的实体(因此,当混淆代码运行时,NHibernate 会将其映射到混淆的类名) 2. 流畅的 NHibernate(同样,映射在代码,所以混淆应该不是问题——我认为)。

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

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

如果我们将 HQL 查询转换为使用 NHibernate Criteria API,Criteria API 会有所帮助吗?

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

谢谢,

克里希纳。

4

2 回答 2

1

我能想到的唯一解决方案是使用 Linq to NHibernate。目前它是NHibernate Contrib 项目的一部分,并不完全稳定。它将成为 NHibernate 2.1 版本的一部分,该版本目前处于“Alpha”状态,应该很快就会稳定下来

对于映射,我会使用 Fluent NHibernate。由于 Linq 和 Fluent NHibernate 都使用 Lambda 表达式,因此它应该可以进行混淆处理。

于 2009-05-03T17:47:31.450 回答
0

NHibernateConfiguration对象非常灵活。通过调用:

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

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

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

于 2009-05-04T19:39:54.073 回答