我想在实体框架中做一个简单的(或不是)数据访问控制。我看到它在EF中不那么容易支持,因为EF实际上没有很好的模式和视图支持。实体框架中的数据访问控制
我想有条件地访问一些实体的列。
在Sql Server中,使用模式很容易实现。例如,我可以在他的架构中为用户创建一个视图,其中有些列是错过的。其他用户(例如admin)将在其模式中包含所有列。它们都可以具有相同的视图名称,例如:getUsers,但是只有将从dbo schema(dbo.getUsers)执行它的管理员将拥有所有列,而其他人只有一部分。当然,在Sql Server中,也可以通过存储过程来实现。
如何在EF中实现数据访问功能?
我要让我将能够使用这样的功能:当然
-- function checks user role and returns appropirate columns/entity
var result = getAppropirateDataForThisUser("getUsers", user);
它只是为了说明问题。用法可以完全不同。
当我有很多实体/视图/过程时,可能很难处理。没有更简单的解决方案吗?为每个对象实现方法可能是个坏主意。我宁愿过滤存储过程或视图在DB网站上的列... – nosbor 2012-04-20 16:47:23
在这种情况下..是的。我认为你需要在数据库方面。 – 2012-04-20 16:50:00
好的,但我如何在EF中处理它?我试图通过db.ExecuteStoreQuery(@“execute”+ schema +“。”+ procName)来完成它。但是当我从模式中执行过程时,我收到较少的列,然后EF抛出异常,没有足够的列来执行此操作... –
nosbor
2012-04-20 17:05:57