我的一些初步想法涉及修改EDMGEN工具创建的部分类,并提供了一些有限的支持.用户仍然可以通过使用自己的eSQL语句和一个queryObject来解决这个问题.
我一直在寻找一个全面的解决方案,它将存在于数据库提供者之上,以使它保持不可知性.
解决方法 当然可以做到重要的是要阻止直接访问对象上下文(阻止用户构建自己的Objectquery),而是为客户端提供一个较窄的网关来访问和变更实体.我们可以使用 Entity Repository pattern.你可以找到一个 example implementation of this pattern for the entity framework in this blog post.再次,关键是阻止对对象上下文的访问.请注意,对象上下文类是部分的.因此,您应该能够防止“未经授权”的实例化方式,即在存储库组合之外.但是,有些微妙的考虑.如果您通过存储库模式在某个实体类型上实现行级视图安全性,则必须考虑客户端可以访问相同实体的其他方式.例如,通过导航关系.您可能需要将某些关系私有化,您可以在模型中进行.您还可以选择specifying a custom query或加载/保存实体的存储过程.存储过程往往是DB服务器特定的,但sql可以以通用方式编写.
虽然我不同意这不能与实体框架完成,但我同意“实施DB服务器”的意见,因为您应该实现defense in depth.
总结以上是内存溢出为你收集整理的c# – 具有实体框架的行级安全性全部内容,希望文章能够帮你解决c# – 具有实体框架的行级安全性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)