我正在尝试在ASP.NET MVC 3应用程序中实现一个非常精细的安全模块,其中只有某些用户可以编辑表中记录的某些列。我可以想象更新SQL语句的列列表只包含用户有权更改的列。问题是,我打算使用像NHibernate这样的ORM。我想知道NHibernate是否提供了一种在运行时确定模型的哪些属性应该是Update的一部分的方法。或者是我唯一的选择,在POST方法上,再次从数据库中获取模型,仅设置允许用户设置的属性,最后保存模型。另外,这是处理粒度安全性要求的好方法吗?
答案 0 :(得分:1)
动态更新和动态插入是否足够?
dynamic-update(可选,默认为false):指定应在运行时生成UPDATE SQL,并且仅包含值已更改的列。
dynamic-insert(可选,默认为false):指定应在运行时生成INSERT SQL,并且仅包含值不为null的列。
否则可能会有事件或拦截器,但我从未使用它们,所以我不确切知道。