2011-03-09 56 views
0

我已经阅读了一些关于ADO.NET实体框架的内容,但还是有一些东西丢失了。现在(不使用EF,不知道这种技术被称为什么,只是ADO.NET?),我们将所有过程存储在数据库中,这样,如果我们必须更改任何我们必须进入数据库并更改查询,很容易(除了事实上我有100多个查询)。ADO.NET实体框架比我使用的方法更好吗?

如果我对EF正确,我可以更容易地查询(没有连接,更短的查询),但所有内容都保存在实体数据模型中。因此,如果我需要更改查询,我将不得不启动VS进入,找到位置并更改查询(我想这将是LINQ到SQL或实体SQL来执行查询)

我只需要一些关于EF的说明,以及Entity SQL与Linq-to-SQL。

谢谢!

回答

1

当使用EF您可以使用多种类型的数据访问:

  • Enity SQL - 这是语法类似于常见的SQL查询,但都直接在代码或实体模型。如果您想更改查询,则必须重建并重新部署应用程序。
  • Linq-to-entities - 在实体模型之上的Linq查询。同样,如果您想更改查询,则必须重新生成并重新部署应用程序。
  • 执行导入到模型的存储过程(也称为函数导入) - 这仅仅是作为.NET函数在您的ObjectContext上公开的sotred过程。 EF将处理参数和结果映射。
  • 执行直接SQL ExecuteStoreQueryExecuteStoreCommand(仅限EFv4)。在这里你可以调用任何SQL,包括存储过程。

因此,对于EF,您既有目前的方法,也有EF本身。此外,通过EF调用本机SQL具有一些优点,如自动映射到准备好的类。

无论如何,你描述的是非常罕见的情况。在许多公司中,修改DB中的某些内容需要修改应用程序的相同过程(或者更复杂),因此您不能简单地去修改生产中的存储过程。

+0

因此,基本上使用EF(即将数据库模型转换为VS的过程)为我提供了更多选择,而不是我单向的数据访问方式。并保持C#程序员与数据库开发人员分开(如果是这种情况) – Spooks 2011-03-09 15:37:16

+0

@Spooks:是这两个语句都是真实的,但如果你真的想有效地使用EF,你也必须理解你的数据库服务器。 – 2011-03-09 15:39:31

+0

我看到你没有提到linq-to-sql的猜测是不是用于这个? – Spooks 2011-03-09 15:46:37

相关问题