c# - 使基于 Nhibernate 的 DAL 混淆变得友好

标签 c# nhibernate obfuscation orm

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

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

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

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

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

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

谢谢,

奎师那。

最佳答案

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

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

关于c# - 使基于 Nhibernate 的 DAL 混淆变得友好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/810383/

相关文章:

c - 需要帮助解释混淆的 C++ 代码吗?

c# - C#中的抽象类构造函数

sql-server - NHibernate 身份字段

php - 使用 PHP 进行 Javascript 缩小和收缩变量

nhibernate - Fluent NHibernate Syscache2 缓存过期

nhibernate - 您如何处理分离的 QueryOver 实例?

scala - 如何使用 Proguard 和 SBT 混淆 Fat Scala Jar

c# - 使用 C# 的可用 TCP 端口探测

c# - 通过 ref 和 out

c# - 在没有警告的情况下使用 ClosedXML 将 Gridview 导出到 Excel : the file you are trying to open is in a different format