我们项目的数据库管理员已决定每个用户每个用户必须拥有1个SQL Server架构。这意味着如果系统确实有20k用户,那么Sql Server将拥有20k架构。原因是为了安全。
到目前为止,没有问题,但由于我们正在使用Entity Framework并且在初始化数据库上下文时启动时设置了Schema,因此我们无法更改架构。
我的问题分为两部分:
我们在Asp.Mvc上使用带有.Net 4.0的C#和Sql Server 2008 R2和EF4.3。
答案 0 :(得分:1)
SQL Server 2005中引入的模式提供了一种将数据库用户与数据库对象所有者分开的便捷方法。
现在我认为为每个用户创建一个模式可能太多,因为您可能拥有具有不同模式但是同一对象的所有者的用户。
我认为可能只有几个不同的模式(划分责任区域或逻辑分组,例如(我们的表格的数据和分段模式)),以便更细粒度的对象所有权管理
的更多信息
http://msdn.microsoft.com/en-us/library/dd283095%28SQL.100%29.aspx
关于在EF中使用不同的模式,请参阅
SQL Server "User-Schema Separation" and Entity Framework issues
答案 1 :(得分:1)
对我来说,为每个用户使用不同的架构似乎很愚蠢,而且很麻烦。特别是如果你真的要向20K用户前进。
我很确定在SQL Server和ASP.NET MVC之间你可以实现一个安全的解决方案而不这样做。
我的2美分:)
我认为Entity Framework Runtime Model Adapter应该可以帮助您解决有关更改架构的问题。
一组Entity Framework连接和模型适配器,允许 在运行时任意调整ObjectContext模型。
此项目允许开发人员调整实体框架架构 在运行时,部署和开发环境不同。