【问题标题】:Entity framework vs enterprise library [closed]实体框架与企业库 [关闭]
【发布时间】:2012-05-25 06:16:40
【问题描述】:

我正在开发一个 asp.net 项目,客户允许我远程访问数据库。

数据库有两个用户。一个用户具有只读访问权限,而另一个用户具有所有者访问权限。客户说,出于读取数据的目的,我们应该使用第一个,而对于插入等,我们应该使用第二个。

另外,客户端告诉我尽可能使用存储过程,因为有很多数据将来自数据库服务器。我想使用实体框架(edmx)。我可以使用存储过程吗?在实体框架之前,我一直在使用企业库来存储过​​程。我是否需要返回并将其与存储过程一起使用,以便所有与数据库相关的工作都在 db 服务器端完成,而不是使用实体框架将数据带到 Web 服务器?

另外,我如何使用一个用户进行只读,而其他用户访问同一个数据库进行插入?我需要创建两个网络配置吗?让用户只读并更快地获得结果有什么不同吗?

如果有更好的方法,请建议我。

请提出建议。

【问题讨论】:

  • 我投票决定关闭它,因为:很难说出这里要问什么。这个问题是模棱两可的、含糊的、不完整的、过于宽泛或修辞的,无法以目前的形式得到合理的回答。
  • 你在问一些非常模糊的问题。我会将其更改为多个单独的问题。

标签: c# asp.net sql-server entity-framework enterprise-library


【解决方案1】:

您可以在 EF 中使用存储过程。但要注意,让实体与存储过程一起工作真的很困难。

EF在不写sql语句的情况下生成查询,它通过观察实体的变化来生成sql语句。它只是将您的实体映射到数据库表。因此,如果您有名为“Item”的表,它会在代码端创建一个对象“Item”。您可以使用代码操作“Item”实体并调用 EF 的相关方法,以将实体中所做的更改反映到 DB。

您可以根据操作动态创建连接字符串。

这个问题太宽泛了,所以我不知道这是否有帮助。

【讨论】:

    【解决方案2】:

    问他让您通过一个用户读取访问权限并通过另一个用户插入访问权限,他觉得他有什么优势,如果他有正当理由,那么请确保他知道他在增加开发时间和维护。

    其次,使用存储过程与数据量有什么关系?如果您正在执行大量查询(如果您正在提取大量数据,则可能不会),那么您可以通过使用存储过程来略微减少网络流量,因为触发存储过程的请求将少于查询细绳。不过,这甚至不值得担心。

    Jeff Atwood 实际上在这里有一些关于存储过程的很棒的 cmets: http://www.codinghorror.com/blog/2004/10/who-needs-stored-procedures-anyways.html

    这里: http://www.codinghorror.com/blog/2005/05/stored-procedures-vs-ad-hoc-sql.html

    通常,当人们想要限制开发人员使用存储过程时,这是为了获得不真实的感知好处,并且他们没有意识到他们无缘无故地减慢了开发速度。并不是说存储过程不好,但它们有自己的位置,并且有一条规则说它们应该尽可能广泛地使用是没有意义的。

    【讨论】:

      【解决方案3】:

      实体框架不会发生在服务器端。它生成一个 sql 查询,该查询在 db 上执行。结果集它被 ef 映射到一个对象。这称为 ORM。 Google 应该有大量关于 ORMS 的信息。

      布莱尔

      【讨论】:

      • 我可以使用存储过程和实体框架来加速性能吗?
      • 您可以将存储过程与 EF 一起使用。但是,在 EF 4.x(当前版本)中使用存储过程会丢失很多功能。
      • -1 这个答案具有误导性 - EF 确实在服务器端执行查询,此外,与 IEnumerable 一样,IQueryable 被延迟,因此后续类似 Linq 的过滤和转换也会发生在服务器/数据库上,并且可以和包含 where 子句的 SP 一样高效(抛开动态构造 SQL 语句的开销)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2010-09-06
      • 2016-01-17
      • 1970-01-01
      相关资源
      最近更新 更多