2

我是 Entity Framework 的新手,当然,我在 SOF 上发现了一些关于目标用例的问题。

让我给你一些信息。我不是在与不同的数据库供应商或不同的数据库打交道;一个,而且只有一个,SQL Server 2008 和数据库有不到 30 个表。我真的需要重做一些事情并使用实体框架吗?

编辑:

感谢 James 解决了我的问题。所以我假设使用 EF 会增加开销并在后台做一些我不知道的工作。这是 MS 的工作方式,所以我想我的下一个问题是:

  1. 它也会影响性能吗?

  2. 它是否支持hierarchyid数据类型?

4

2 回答 2

5

使用实体框架(或任何其他对象关系映射器,例如 LINQ to SQL、NHIbernate 等)的主要原因是为了在您的应用程序中更轻松地访问数据。使用 EF,您只需将新值分配给 .NET 对象即可获得通过 LINQ 进行查询和简单更新的强大功能,而无需自己编写任何 SQL 代码。

就我个人而言,我使用 EF Code First 和 EF Migrations 进行绿地开发和 LINQ to SQL 在我有现有数据库可以构建的情况下。

于 2012-07-14T18:05:28.693 回答
2

如果您正在执行交互式数据操作,则应使用 ORM 对象关系映射器(例如 EntityFramework SQL 或使用存储过程调用)。ORM 确实有性能损失,但在交互式系统中,这种性能损失可以忽略不计,一方面是因为“繁重的工作”大大减少,另一方面是因为产生最大性能损失的元素是人与系统交互

另一方面,如果您需要对复杂的东西进行大量的批处理,这些东西将从一些表中取出东西并将其放入其他表中而无需任何交互式用户干预,那么在这种情况下,ORM 方法的性能损失就会变得很明显,避免从数据库内存空间中取出东西是值得的,使用存储过程的性能优势最终变得明显。

所以总的来说:

  • 将 ORM 用于交互式内容
  • 将存储过程用于非交互式批处理内容
于 2012-07-15T03:57:05.497 回答