4

我的任务是在 C# 中创建一个用于管理公司员工的程序。只是一个简短的概述 - 每个员工的所有信息都将存储在 MS SQL 数据库中。作为表示层,我必须使用 WPF 并作为与数据库的通信 - LINQ to Entities。

问题是 - 我设法自己学习了 WPF,但 SQL 是一件严肃的事情。我做了一些研究,但即使在阅读了许多不同的教程之后,我也没有找到任何令人满意的东西。我什至不明白这个模型的机制。我的理解是,在 SQL Server 中创建数据库根本没有任何作用,因为从数据库创建实体模型后,它不再与 SQL Server 绑定。因此,更新创建的 SQL 数据库中的数据对程序本身不再有用。我可能错了,这很有可能,但我就是不明白。

那么,谁能指出我正确的方向?我什至必须知道什么才能开始?也许这样一个菜鸟的一些教程?

4

3 回答 3

5

ADO.NET Entity Framework (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) 创建灵活的强类型查询

教程可以在这里找到

于 2013-03-02T17:24:24.030 回答
1

这基本上与您实际所说的相反:

我的理解是,在 SQL Server 中创建数据库根本没有任何作用,因为从数据库创建实体模型后,它不再与 SQL Server 绑定。因此,更新创建的 SQL 数据库中的数据对程序本身不再有用。

发生的情况是实体框架 (EF) 连接到您的数据库并从您的 SQL Server 获取数据。从那时起,当您在应用程序中进行更改时,EF 将以“分离”模式运行。这可能是您困惑的根源。您缺少的部分是您告诉 EF 使用 ef.SaveChanges() 将在“分离”模式下所做的所有更改推送回您的数据库。因此,您在内存中进行更改,然后当您准备好时,您告诉 EF 将这些更改推送到数据库。

现在到您的另一点,如果您直接对 SQL Server 进行更改(我可以看到会发生这种情况的场景),您肯定会遇到“分离”模式 EF 对象的问题。老实说,我不确定这里会发生什么,比我更有经验的人应该说,这是一个非常有趣的问题,我也想知道答案。

以下是一些我觉得不错的教程信息:

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

并且:

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

编辑:当我谈论分离模式时,请了解在 EF 内部有多种模式可供您操作,其中一种是分离模式。我讨厌在我的答案 b/c 中使用“分离模式”一词,我知道其他人会说这个词令人困惑,他们是正确的。只需了解在 EF 内部有一个“分离”模式,它在某种程度上是一个高级主题。

于 2013-03-02T17:15:56.370 回答
1

Entity Framework 是非常简单且非常强大的 ORM。我对您的建议是从http://www.asp.net/entity-framework开始。在这里,您可以找到很多入门教程,以帮助您在短时间内启动和运行。尽管这些教程与 ASP.NET 相关,但您可以很容易地理解它们并将它们与其他平台一起使用。

于 2013-03-02T17:17:54.047 回答