EF的應用

来源:https://www.cnblogs.com/trumpblogs/archive/2019/02/11/10362089.html
-Advertisement-
Play Games

EF是 EntityFramework 的簡稱。在程式和資料庫交互的過程中,起到了極大的方便。 首先在需要使用EF的項目單擊,然後 Ctrl+Shift+a 找到ADO.NET實體數據模型。 首先在需要使用EF的項目單擊,然後 Ctrl+Shift+a 找到ADO.NET實體數據模型。 單擊添加後, ...


EF是 EntityFramework 的簡稱。在程式和資料庫交互的過程中,起到了極大的方便。

EF的使用
  • 首先在需要使用EF的項目單擊,然後 Ctrl+Shift+a 找到ADO.NET實體數據模型。

image

  • 單擊添加後,會讓選擇模型內容,目前用到的就只有 (數據表,存儲過程, 視圖),所以選擇添加 來自資料庫的EF設計器

  • image
  • 點擊下一步,會讓我們選擇一個資料庫,如果沒有自己想要的資料庫連接,可以自己新建連接。然後我們會看到這個image 選擇是,然後直接下一步就可以了,別的都不用管。

  • 這一步中就可以選擇表,視圖,或者存儲過程等了,這個根據自己需求添加即可。 跟之前一樣,別的什麼都不用管,添加好之後的截圖:

image

  • 最後一步點擊完成就可以了。由於文件比較大,所以添加後,可能會出現卡頓的現象。


添加後,解決方案中會增加這個文件夾:

image


EF的實際應用(增刪改查)。

首先說明一下: 添加EF 之後,會自動的給程式添加實體類。

EF的增加:

首先實例化剛纔添加的EF ,再用對象初始化器將自己要添加的對象實例化,然後使用EF添加再保存即可。案例:

EFDBEntities efdb = new EFDBEntities();
        Students objStudent = new Students()
        {
            StudentName = "小明",
            ClassId = 2,
            Gender = "男"
        };
        efdb.Students.Add(objStudent);
        int result = efdb.SaveChanges();

代碼詳解:

  • 首先實例化了 EF
  • 然後使用對象初始化器將自己要添加的對象實例化
  • 接下來用自己實例化的EF 添加一下剛纔實例化後的對象
  • 最後保存到資料庫中。

最後兩部的解釋:這兩行代碼看似是冗餘的,但是實際上並不冗餘,少了哪一行代碼都不行。其中 第一行代碼就是將這個對象添加到緩存中,但是並沒有上交到資料庫中,而第二行代碼就提交到了資料庫中,然後用一個int類型的參數接受執行的行數。


(修改)

想修改,就要先找到要修改的對象。

  • 首先還是實例化EF
  • 其次就是查找需要修改的學員的對象。 (由於修改中用到了查詢,所以在這裡就不介紹查詢了。直接參照這個修改的查詢就可以了。)
  • 修改各個屬性的值
  • 提交保存

在這裡用到了兩種查詢方式,用哪個都可以,完全看個人愛好。

首先將需要修改的對象 查詢出來。

Students objStudent = efdb.Students.FirstOrDefault(s => s.StudentId == 1000006);

然後修改各個屬性值就可以。

objStudent.StudentName = "張紅利";
        objStudent.PhoneNumber = "99999999";

修改完之後提交保存。

int result = efdb.SaveChanges();

另一種查詢的方式

Students objStudent = (from s in efdb.Students
                           where s.StudentId == 100006
                           select s).First<Students>();

通過主鍵列獲取對象信息。

Students objStudent = efdb.Students.Find(100006);

註意:find只能查詢主鍵也就是id 然後獲取整個對象。裡面不能查詢姓名等。

如果取的是第一個值:

Students objStudents = (from s in students select s).FirstOrDefault();

如果取得是唯一值:

objStudents = (from s in students select s).SingleOrDefault();

兩者的區別:

第一個值:獲取學員中的第一個對象.(可以是多個)

唯一值:如果查詢結果只有一個.(必須是一個)

First()、FirstOrDefault() 異同:
- 相同點:都用於獲取結果集中的第一個元素
    
- 不同點:如果序列中不包含任何元素,前者返回null,後者返回預設值

Single()、SingleOrDefault()異同

- 相同點:都用於獲取結果中的唯一元素

- 不同點:如果序列中不包含任何元素,前者返回null,後者返回預設值

- 特別註意:當數據源中包含多個元素時,這兩個方法會產生異常。

(刪除)

想刪除,就要先找到要刪除的對象。

  • 首先實例化EF
  • 查詢需要刪除的對象
  • 從資料庫中刪除這個對象。

首先需要找到需要刪除的學員對象

Students objStudent = efdb.Students.FirstOrDefault(s => s.StudentId == 100015);

然後從集合中刪除對象

efdb.Students.Remove(objStudent);

最後保存到修改。

int result = efdb.SaveChanges();

.Net Framework 支持的規範函數

image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、虛擬機參數配置 在上一篇《Java自動記憶體管理機制——Java記憶體區域(上)》中介紹了有關的基礎知識,這一篇主要是通過一些示例來瞭解有關虛擬機參數的配置。 1、Java堆參數設置 a)下麵是一些簡單的使用參數 其中最後一個是一個運行時參數設置的簡單實例。一般-XX是系統級別的配置(日誌信息,或者 ...
  • 前言: 最近項目中用到了全國省市區三級信息,但是網上找到的信息都是比較舊的信息。與現在最新的地區信息匹配不上。後來想到高德地圖上可能有這些信息。所以解析了一下api介面,生成了相關省市區的sql信息。(註意:這裡面沒有港臺地區)具體的請參看高德地圖文檔。 alibaba.fastjson解析+mys ...
  • An inch is worth a pound of gold, an inch of gold is hard to buy an inch of time. Slice When the scale of data is so large that we have to pick a shor ...
  • /*方法其實很簡單,將下麵的方法放在你的類裡面就能用了,要是看不懂原理的話回去補補小學的知識,哈哈。*/public static int GCD() { Scanner input = new Scanner(System.in); //不要忘了引入方法 int a = input.nextInt... ...
  • 在作完預備的初始化和session測試後,到了作為一個權鑒別框架的核心功能部分,確認你是誰--身份認證(Authentication)。 本文涉及到token的構建,框架結構下認證行為的調用,realm中授權數據的獲取、登錄信息比較,login過程中對已有有subject、session的處理 ...
  • 新年第一篇博文,接著和大家分享springcloud相關內容;本次主要內容是使用cloud結合zookeeper作為註冊中心來搭建服務調用,前面幾篇文章有涉及到另外的eureka作為註冊中心,有興趣的朋友會回顧下上幾篇文章。 springcloud版本說明 docker快速啟動一個zookeeper ...
  • 1.泛型:先聲明,延遲編譯。 public static void DoSome<T>(T t) { Console.WriteLine(t); } 這個方法就是泛型方法,先申明參數為T,不知道具體是什麼類型。 使用的時候DoSome<int>(1); DoSome<string>("hello") ...
  • 效果:兩個DataGrid的滾動條實現同步滾動。 代碼參考了博客園chuncn的文章《.net中同步多個ScrollViewer滾動的四種方法》,原文是針對ListBox的。現改為針對DataGrid,略微作了修改,代碼以水平滾動條為例。 原文地址:https://www.cnblogs.com/c ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...