示例.NET C#MVC项目使用实体框架与数据库优先,多领域架构和基于角色的安全性?

时间:2016-06-14 20:37:07

标签: c# asp.net-mvc entity-framework asp.net-mvc-4

是否有官员'或者“更好”'使用具有数据库优先,多领域架构和基于角色的安全性的实体框架实现.Net C#MVC项目的方法?

我使用Entity Framework和Database First做了一些MVC项目。因为项目相对简单,所以每当需要查询时,我在控制器中创建实体,直接执行LINQ查询。现在,如果我想实现多关系架构,这是否意味着我需要重构所有这些,并将所有查询代码分离到服务层?即使是一个非常简单的查询?

对于基于角色的安全性,实时时间,UI根据角色而不同。例如,对于admin,应显示所有按钮。但对于普通用户,也许我们只想显示1个按钮。在这种情况下,我通常在视图中使用剃刀语法并在控制器中再次检查角色。这是正确的方法吗?

我想知道在这些情况下是否有一些示例项目。经过一番搜索,我找不到它们。

由于

1 个答案:

答案 0 :(得分:2)

这听起来像很多不相关的问题。

  • 是的,对于任何复杂的解决方案,您确实需要将所有数据库逻辑移到Controller层之外。
  • 有很多方法可以构建您的应用程序和不同的设计理念。您可以查看this answer的一些想法,但在现实世界中,选择正确的架构是一个难以解决的问题,没有一个适合所有人的解决方案。您必须考虑功能和非功能需求,可维护性/可扩展性需求,最终用户/消费者功能和期望,甚至是用户的个性。建立一个你可以随处复制和应用的好例子是不可能的。
  • 如果您使用的是基于角色的安全性,则可以在视图中进行检查。决定是否显示该按钮是一个UI问题,因此最终您将在Razor视图中以if语句结束。不同的人可能争论你是否应该直接在那里检查角色或在模型上存储一些东西以确定应该或不应该显示什么,但最终它几乎是相同的。