2013-03-02 153 views
4

我有这个任务在C#中创建一个程序来管理公司的员工。仅简要概述 - 关于每个员工的所有信息都将存储在MS SQL数据库中。作为表示层,我必须使用WPF和数据库的通信 - LINQ to Entities。SQL Server +实体框架基础知识

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

那么,任何人都可以指向一个正确的方向吗?我甚至必须知道什么才能开始?也许一些这样的noob教程?

回答

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到实体允许开发人员通过使用LINQ表达式和LINQ标准查询运算符来创建灵活,对实体数据模型(EDM)的强类型查询

教程可以Found Here

+1

我的错误是假设Enity框架所连接到一个文件。了解它连接到引擎有很多帮助。谢谢:) – Auliszek 2013-08-31 15:18:28

+0

你仍然可以发送原始的SQL – markmnl 2016-09-01 23:47:29

1

它基本上你居然说的正好相反:

这是我的理解,即创建在SQL Server数据库中根本 什么也不做,因为一个创建从 数据库实体模型后,就不再绑定到SQL Server。因此更新 中创建的SQL数据库不再对程序本身有用。

实体框架(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内部有各种可以操作的模式,其中一种是分离模式。我讨厌在我的答案中使用'detatched模式'这个术语。我知道其他人会出现并说这个术语很混乱,而且他们是正确的。只要了解EF内部有一个'detatched'模式,这是一个先进的话题。

1

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