我应该在每个app \ thread \ atomic操作中使用一个上下文吗?使用方法 - 每个app \ thread一个上下文可能会稍微提高性能和调用导航属性的可能性,但我们遇到另一个问题 - 更新此上下文并在上下文中增加加载的数据,我也不确定每个dbcontext的并发性应用程序\线程。使用每个操作的上下文将导致我们将ef结果重新映射到我们的DTO。所以你看到我们再次回到问题1。
我们可以尝试仅使用EF + SP吗?我们再次提出以前的问题。如果不使用大部分功能,使用ef的原因是什么?
所以,是的EF很适合开始项目。当我们几乎没有屏幕和crud操作时,它非常方便。 但接下来呢?
所有这些文字都只是未分类的想法。我知道纯粹的ado.net会带来另一种挑战。 那么,您对此主题有何看法?
答案 0 :(得分:20)
通过遵循命名约定,您会发现它被称为:ADO.NET实体框架,这意味着实体框架位于ADO.NET之上,因此它不会更快,它可能会执行在相同的时间内,但让我们看看EF提供:
最后:EF和LINQ在以后维护您的应用程序方面给予了很大的帮助。
实体框架有三种不同的模型:模型优先,数据库优先和代码优先了解每个&em; em。
- 重映射过程中杀死性能的要点正在进行中,因为在第一次运行时,EF将元数据加载到内存中,并且从edmx文件构建模型的内存表示时需要时间。 / p>
答案 1 :(得分:1)
在任何情况下,实体框架都无法像大多数旨在实现“更快”结果的工具或工具箱那样高效。
使用存储过程作为接口,应该将对数据库的访问视为一个单独的层。没有任何应用程序比绝对需要CRUD操作更多的理由。少即是多的原则。存储过程易于编写,保护和维护,实际上是最快的方法。很容易编写工具来通过存储过程为POCO和DbContext
生成所需的代码。
设计精良的应用程序应具有数量有限的数据库连接字符串,而其中任何一个都不应该是全能的上帝。使用架构支持连接权限。
延迟加载是为解决不应该存在的问题而添加的虚假语句,它是ORM及其即插即用功能引入的。仅在需要时才读取数据。开发人员应负责根据应用程序上下文实现此逻辑。
如果您的应用程序逻辑在维护状态方面有问题,那么没有工具会帮助您。实际上,通过掩盖实际问题直到为时已晚,这会使情况变得更糟。
首先,数据库是设计良好的应用程序的唯一解决方案。文明很久以前就意识到了固体渡槽和下水道系统的重要性。高级代码可以并且将随时替换,但是数据保持不变。如果数据库设计合理,重写整个应用程序只需几天时间。
应用程序只是对数据库的访问而已。在大多数情况下仍然如此。
这是我通过许多不同的工具或工具箱生成的代码进行业务应用程序调试多年后得出的结论。标榜的更快结果甚至无法覆盖后来试图清理混乱情况所浪费的时间/精力。性能问题很少(即使不是由高需求引起)的,而是通过不可用工具添加的所有“功能”的总和。
答案 2 :(得分:0)
ADO。 Net是一个面向对象的框架,允许您与数据库系统(SQL,Oracle等)进行交互。 实体框架是一种操纵数据库中数据的技术,如(查询集合(惰性表名,select * from this))。 它与LINQ一起使用。
答案 3 :(得分:0)
ADO.NET提供对SQL Server和XML等数据源以及通过OLE DB和ODBC公开的数据源的一致访问。数据共享使用者应用程序可以使用ADO.NET连接到这些数据源,并检索,处理和更新它们包含的数据。
Entity Framework 6(EF6)是用于.NET的久经考验的对象关系映射器(O / RM),具有多年的功能开发和稳定性。像EF这样的ORM具有以下优势
ORM使开发人员可以专注于应用程序的业务逻辑,从而有助于减少代码。
它消除了对重复SQL代码的需求,并为开发速度带来了许多好处。
防止编写手动SQL查询;等等。
以下是与类似主题相关的主题:What is the difference between an orm and ADO.net?