2013-03-02 203 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綁定在一起,但您可以很容易地理解它們並將它們與其他平臺一起使用。