SQL Server + Entity Framework基础知识

4

我有一个任务,需要用C#编写一个程序来管理公司的员工。简单来说,每个员工的所有信息都要存储在MS SQL数据库中。作为演示层面,我要使用WPF,与数据库进行通信则需要使用LINQ to Entities。

问题在于 - 我已经自学了WPF,但SQL是一项严肃的事情。我做过一些研究,但即使阅读了许多不同的教程,我仍然没有找到令人满意的答案。我甚至不理解这种模型的机制。据我所知,在SQL Server创建数据库根本没有任何作用,因为在从数据库创建实体模型之后,它不再与SQL Server相关联。因此,在创建的SQL数据库中更新数据对程序本身已经没有意义。我可能是错的,这很有可能,但我就是不明白。

那么,有人能指点我正确的方向吗?我需要了解些什么才能开始呢?也许有一些适合新手的教程吗?

3个回答

5

ADO.NET实体框架(EF)首次发布于Visual Studio 2008和.NET Framework 3.5 Service Pack 1。到目前为止,许多人认为EF只是Microsoft的另一个ORM产品,但是按照设计,它应该比仅仅是ORM工具更加强大。 为此新框架创建了一个名为EntityClient的数据访问提供程序,但在底层仍然使用ADO.NET数据提供程序来与数据库通信。

应用程序不再直接连接到数据库或查看任何特定于数据库的构造;整个应用程序都是基于更高级别的EDM模型操作。 这意味着您不能再使用本机数据库查询语言;不仅数据库无法理解EDM模型,而且当前的数据库查询语言也没有处理EDM引入的元素(如继承、关系、复杂类型等)所需的结构。

LINQ to Entities允许开发人员通过使用LINQ表达式和LINQ标准查询运算符来创建灵活的、强类型的针对实体数据模型(EDM)的查询

教程可以在这里找到


1
我的错误是假设Entity Framework连接到文件。了解它连接到引擎对我很有帮助。谢谢 :) - Demolition Chico
您仍然可以发送原始的 SQL。 - markmnl

1
实际上,它与您所说的相反:创建SQL Server中的数据库基本上没有任何作用,因为在从数据库创建实体模型之后,它不再与SQL Server绑定。因此,在已创建的SQL数据库中更新数据对程序本身不再有用。发生的情况是Entity Framework(EF)连接到您的数据库并从SQL Server获取数据。然后,当您在应用程序中进行更改时,EF以“分离”模式运行。这可能是您困惑的来源。您遗漏的部分是,使用ef.SaveChanges()告诉EF将在“分离”模式下进行的所有更改推回到数据库。因此,您可以在内存中进行更改,然后在准备好时,告诉EF将这些更改推送到数据库。现在转到您的另一个观点,如果您直接在SQL Server上进行更改(我可以看到这种情况发生),则肯定会遇到“分离”模式EF对象的问题。老实说,我不确定这里会发生什么,比我经验丰富的人应该说,这是一个非常有趣的问题,我也想知道答案。以下是我找到的一些教程信息,似乎不错:

http://www.microsoft.com/downloads/details.aspx?FamilyID=355c80e9-fde0-4812-98b5-8a03f5874e96&displaylang=en,实际上在this答案中。

还有:

http://www.codeproject.com/Articles/363040/An-Introduction-to-Entity-Framework-for-Absolute-B

编辑:当我谈论分离模式时,理解在EF内部有各种可以操作的模式之一是分离模式。我不想在我的答案中使用“分离模式”这个术语,因为我知道其他人会说这个术语很容易让人困惑,他们是正确的。只需明白在EF内部存在“分离”模式,这是一个比较高级的话题。


1

Entity Framework是一种非常易用而且功能强大的ORM。我建议您从http://www.asp.net/entity-framework开始学习。在这里,您可以找到很多入门教程,帮助您在短时间内上手。虽然这些教程与ASP.NET相关联,但您可以非常轻松地理解它们并将其用于其他平台。


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