实体框架 - 视图与表

pir*_*ris 4 c# asp.net asp.net-mvc entity-framework

我在我的 ASP.NET MVC 项目中使用数据库优先方法使用实体框架 6...我有一个包含所有表关联的 .edmx 文件。

现在,sql 开发人员不想直接调用表,因此他们希望我改用视图。

我想了解使用视图与表的好处是什么?

另外,我担心如果我使用视图并应用 edmx 中的所有 PK 和 FK 并且重新生成某些内容,更改将会丢失吗?

请问对此有什么想法吗?

Chr*_*att 5

你们的 SQL 开发人员都是白痴。请随意告诉他们。与直接使用表相比,使用表视图的唯一作用是禁止写入操作。如果这是目标,那么有更好的方法可以通过做一些简单的事情来实现这一目标,例如让应用程序使用没有写入权限的用户。

通过使用视图,您将放弃主键、外键和索引,所有这些都有助于提高查询性能。换句话说,您的 SQL 开发人员要求您更加努力地访问数据库并对其进行性能较低的查询。换句话说,他们不知道自己在说什么。

如果应用程序需要写入(坦率地说,很少有应用程序不需要写入),那么视图无论如何都会消失。如果他们真的非常关心实体框架进行写入,那么他们还可以为 CREATE、UPDATE 等任务创建存储过程,并且您可以将这些存储过程集成到实体框架中。然而,我几乎可以向您保证,实体框架正在生成比手工编写更好的 SQL,如果没有其他原因,只是它的使用和贡献人数远远多于您的员工。

  • 并不是说我同意那些 SQL 开发人员的观点,我不同意,但是有 https://msdn.microsoft.com/en-us/library/ms191432.aspx 和这个 https://msdn.microsoft.com/en -us/library/ms180800.aspx 简单的问题是 EF 中对视图的支持不是很好。 (2认同)
  • 这些都是一些很好的观点,但我坚持我的说法。我从来没有见过使用视图不能以更好、更高效的方式解决的良好、实际的原因,尤其是在谈论像网站这样的东西时,理想情况下应该处理数千个同时请求(无论如何,这就是梦想) )。也许如果您将其用于报告或其他一些内部的小批量任务,则可能会在某个地方存在使用视图的争论。不然我就看不到了。 (2认同)