【发布时间】:2013-11-26 06:57:35
【问题描述】:
作为一个简化的例子,我有用户、产品和客户。允许用户访问某些产品和某些客户。
我正在使用 edmx 文件将我的 SQL Server 映射到我的代码并使用 linq 获取数据。一个典型的查询可能如下所示:
from prod in ctx.Products
join userProduct in ctx.UserProduct
on prod.Id equals userProduct.ProductId
join user in ctx.UserProfile
on userProduct.UserId equals user.Id
where user.UserName == username // <-- username is a method parameter
select new Product
{
Id = prod.Id,
DisplayText = prod.UserFriendlyText
}
每次我需要数据库中的数据时,我都必须加入访问权限表以排除用户无权访问的数据。这意味着如果有人(最终会发生)忘记加入访问表,用户将看到太多。有没有办法改为包含数据,这样如果我忘记了访问表,什么都不会显示?
我也一直在考虑将不同的客户分离到不同的数据库中,因为他们的数据永远不会相互关联,如果我在客户之间泄露数据将是一场小灾难。在同一客户的用户之间泄漏产品是不好的,但不是那么严重。
如果重要的话,我在 C# MVC4 CQRS 架构中,读写端之间最终保持一致。
我已经检查过堆栈溢出是否有类似的问题,但我只能找到这个没有答案的问题:
【问题讨论】:
标签: c# entity-framework cqrs