我应该转向Entity Framework吗?

4

我使用的是Visual Studio 2005,但最近听说有一种新技术叫做entity framework。那么我应该转而使用它,而不是使用常规的SqlDataReader吗?!
对我来说最重要的是性能,需要注意的是我使用DataReader从数据库中获取数据,并将其作为通用列表返回。
有什么建议吗?谢谢 :)

6个回答

4

SqlDataReaderEntity Framework 是两种完全不同的访问数据的方法。使用 SqlCommand,您需要自己编写 SQL 查询。通过像 Entity Framework 这样的 O/R 映射技术,关系数据库结构被映射到您访问其属性的对象中,例如 Linq to Entities。请注意,O/R 映射方法并不是为了提高速度。


3
如果你使用的是VS 2005,我认为你不能使用Entity Framework。因此,你需要使用2008和.NET 3.5 SP1版本。Entity Framework存在一些问题。如果你选择使用Entity Framework,则应该选择Visual Studio 2010和.NET 4.0版本,这将是更好的选择。 Scott Gu的最新更新。

2

2

如果您想要转换到Linq to Entities,则需要使用VS2010。

或者您可以继续使用VS2005 / 2008并使用nHibernate或类似的框架。
但这些ORM工具没有(主要)关注速度,因此可能不适合您。

切换到ORM框架的原因是使用更多的OOP方法,即替换通用列表。

请查看一些演示/教程,以决定是否适合您。


1
LINQ to Entities需要VS 2010吗?最新版本需要,但是之前的版本应该可以在VS 2008上使用,据我所知。 - Jon Skeet
@Jon,是的,但我不建议使用第一个EF版本,也不再升级到VS2008。 - H H
1
@Henk:说得很公正,但这并不等同于说“如果你想切换到L2E,你需要VS2010” :)(OP可能无法使用VS2010的其他原因,但他仍然可以使用2008和EF可能仍然是最佳方法。) - Jon Skeet
他还可以使用包含在.NET 3.5中的LINQ to SQL。我认为您需要Visual Studio 2008才能使用它的设计工具。 - Steven
@Jon,说得没错但很假设。如果我不能使用VS2010来做某件事,我就不会使用EF。@Steven:那是其中一个“类似”的框架。列表还有更多。 - H H
显示剩余3条评论

2
我建议先撰写您的需求,然后确定选项,使用一些对于您的需求有意义的测试来评估每个选项(例如易用性、速度等),最后做出决定。通过一些巧妙的设计和实现选择,您甚至可能能够在开始阶段相对较小的努力下切换其中一些。
Entity Framework肯定是一个选项。我建议您还要调查NHibernate,特别是fluent-nhibernate。祝好运!

1
我必须同意 - EF和NHibernate以及其他各种选择确实有很多值得称赞的地方,但每个选项都是一种妥协。一旦在客户端代码和数据库之间使用ORM或任何其他技术,你就会开始增加开销(即性能损失)然而在现实世界中,性能损失往往微不足道,而对开发人员的好处却相当可观。你需要首先决定你想要做什么(即你是否想改变你的数据库访问理念),然后再考虑你的选择。 - Murph

0

自己编写查询仍然是性能方面最好的选择,任何自动化过程都无法超越。实体框架使数据层更加抽象化,从而提高了可移植性和可读性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接