EF的增刪改查

来源:http://www.cnblogs.com/zhuyuchao/archive/2016/07/01/5634196.html
-Advertisement-
Play Games

創建上下文對象:WordBoradEntities db = new WordBoradEntities(); 添加://1.1創建實體對象 User uObj = new User() { uName = "劉德華", uLoginName = "aaa", uPwd = "asdfasdfasd ...


創建上下文對象:WordBoradEntities db = new WordBoradEntities();

添加://1.1創建實體對象

            User uObj = new User()

            {

                uName = "劉德華",

                uLoginName = "aaa",

                uPwd = "asdfasdfasdfsadf",

                uIsDel = false,

                uAddtime = DateTime.Now

            };

            //1.2通過EF新增到資料庫

            //1.2.1將對象加入到數據上下文 User集合中

            db.Users.Add(uObj);

            //1.2.2調用數據上下文保存方法,將對象存數資料庫

            db.SaveChanges();

查詢:List<User> list = db.Users.Where(u => u.uName == "劉德華").ToList();

連接查詢:linq連接查詢: from a in db.User join b in db. UsersAddresses  on a.Id equals b.udid

EF連接查詢:IQueryable<UsersAddress> addrs = db.User.Include("UsersAddresses").Where(a => a.Id == 1);

另一種連接查詢:var list=db.User.Join(db. UsersAddresses,c=>c.Id,g=>g.udid,(c,g)=>new{Name=c.Name,GroupName=g.GroupName});

刪除:EF中實現刪除有三種方式

註:版本一、二都是根據主鍵刪除,版本三是根據任意條件到資料庫查詢然後再根據查詢的結果進行刪除,實際上版本三也是根據查詢出來的結果中的主鍵進行刪除。

版本一:根據主鍵刪除

//實例化一個Users對象,並指定Id的值

  Users user = new Users() { Id = 1 };

  //user附加到上下文對象中,並獲得EF容器的管理對象

  var entry = db.Entry<User>(user);或者 var entry=db.Entry(user);

  //設置該對象的狀態為刪除

  entry.State = EntityState.Deleted;

  //保存修改

  db.SaveChanges();

  Console.WriteLine("刪除成功!");

版本二:根據主鍵刪除

      //實例化一個Users對象,並指定Id的值

      Users user = new Users() { Id = 1 };

      //user附加到上下文對象中

      db.Users.Attach(user);

      //刪除user對象

      Db.Users.Remove(user);

      //保存修改

      db.SaveChanges();

      Console.WriteLine("刪除成功!");

版本三:根據條件先查詢出來然後再刪除

var list= db.Users.Where(u => u.Name ==”張三”)

if(list!=null&&list.Any())

{

       Foreach(User item in list)

       {

       db.User.Remove(item);

}

}

db.SaveChanges();

 

修改:

1.官方推薦的修改方式(先查詢,再修改)

//Id2Users數據取出

      var user = db.Users.Where(u => u.Id == 2).FirstOrDefault();

      Console.WriteLine("修改之前:" + user.UserName);

      //修改UserName屬性

      user.UserName = "222222222222222";

      //保存修改

      db.SaveChanges();

Console.WriteLine("修改之後:" + user.UserName);

2.自己優化的修改方式

  //1.創建出一個要修改的對象

  User use = new User() { uId = 8,uName="小白~~~"};

  //2.對象加入 EF容器,並獲取當前實體對象狀態管理對象

  DbEntityEntry<User> entry = db.Entry<User>(user);

  //3.設置該對象為被修改過

  entry.State = System.Data.EntityState.Unchanged;

  //4.設置該對象 uName屬性修改狀態,同時 entry.State 被修改為 Modified 狀態

entry.Property("uName").IsModified = true;

//5.關閉EF實體合法性檢查(如果創建出來的要修改的數據有的欄位沒有賦值則關閉實體合法性檢查,如果所有欄位都賦值了則不用關閉EF實體合法性檢查)

db.Configuration.ValidateOnSaveEnabled = false;

  //6.重新保存到資料庫 -- ef 上下文根據實體對象的狀態,根據 entry.State =Modified 的值生成對應的 update sql 語句.

db.SaveChanges();

Console.WriteLine("修改成功:");


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

-Advertisement-
Play Games
更多相關文章
  • 隨著CYQ.Data 開始回歸免費使用之後,發現用戶的情緒越來越激動,為了保持這持續的激動性,讓我有了開源的念頭。同時,由於框架經過這5-6年來的不斷演進,以前發的早期教程已經太落後了,包括使用方式,及相關介紹,都容易引人誤解。為此,我打算重新寫個系列來介紹最新的版本,讓大伙從傳統的ORM編程過渡到... ...
  • 環境: Ubuntu 16.04 dotnet-dev-1.0.0-preview2-003121 Visual Studio 2015 update 3 Ubuntu 安裝.net core 參考:https://www.microsoft.com/net/core#ubuntu 1.添加源 2. ...
  • 1、安裝.NET Core SDK 在windows下開發.NET Core最好使用Visual Studio工具。下載地址與安裝: VS2015最新版本:Visual Studio 2015 Update 3* VS環境下的.Net Core:.NET Core 1.0 for Visual St... ...
  • 一、前言 上回說到需要做放視頻的使用嚮導,這兩天公司里的老司機一直幫我答疑解惑,讓這個任務變得挺順的,真心感謝他們! 這次與【1】中的不同之處在於: (1)播放和暫停按鈕集成在<MediaElement>的點擊事件之中,點一下是播放,再點一下是暫停 (2)加入了微軟官方改寫的粒子特效 (3)加上了自 ...
  • SQL語句中: 1 2 3 4 1)select * from TableName where StartTime > '2015-04-08' 2)select * from TableName where StartTime >= '2015-04-08' 3)select * from Tab ...
  • 增加: 第一種方法:Response.Cookies[“UserName”].Value=”張三” Response.Cookies[“UserName”].Expires=DateTime.Now.AddDays(1); 第二種方法: HttpCookie cookie=new HttpCooki ...
  • 一步一步造個Ioc輪子目錄 定義容器 首先,我們來畫個大餅,定義好構造函數,註冊函數及獲取函數這幾個最基本的使用方法 接下來我們把上一篇魔改過的泛型工廠再魔改一下,我們把這個工廠去掉static再添加支持泛型委托創建對象的註冊方法,由於整個Ioc設計不是靜態使用的,所以工廠里的內部類static r ...
  • 第一步:新建一個類實現IEqualityComparer<ActionInfo>介面,用實現此介面的方法。 第二步:複雜類型集合=複雜類型集合.Distinct(new 新建類()).ToList(); 例子: 1.新建的類 public class ActionEqualCompare:IEqua ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...