小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Entity Framework 簡單增刪改操作

 昵稱10504424 2013-10-09

 在 Entity Framework 簡單查詢操作 中主要是學(xué)習(xí)了在Entity Framework中的幾種不同模式的查詢操作,現(xiàn)在主要來學(xué)習(xí)一下簡單的增加、刪除、修改操作。

增加

  在EF中添加操作一般有兩種方式:一是直接創(chuàng)建對象,然后調(diào)用“DbSet”的”Add()”方法進(jìn)行添加;二是調(diào)用數(shù)據(jù)庫上下文的”Entry()”方法并設(shè)置對應(yīng)的狀態(tài)。無論使用哪種方式最終一定要調(diào)用“SaveChange()”進(jìn)行提交。如:

執(zhí)行后效果如下

 

 此外,在含有導(dǎo)航屬性時,將一個對象賦值給另一個對象的導(dǎo)航屬性也能達(dá)到添加的效果(當(dāng)導(dǎo)航屬性為”DbSet“集合時通過調(diào)用導(dǎo)航屬性的“Add()“方法也同樣可以達(dá)到添加效果)。

狀態(tài)跟蹤

 在這里我們需要強(qiáng)調(diào)一點那就是狀態(tài)跟蹤,對于上面的操作如果我們調(diào)用“Attach()”方法對實體進(jìn)行跟蹤或者設(shè)置實體的狀態(tài)那么數(shù)據(jù)將不會保存到數(shù)據(jù)庫:

 

這兩句添加任何一句效果都是一樣的,就是都沒有保存到數(shù)據(jù)庫中。

 

使用”Attach()”方法進(jìn)行實體跟蹤時會設(shè)置實體的狀態(tài)為“Unchanged”此時實體處于未修改狀態(tài),當(dāng)執(zhí)行“SaveChange()”方法時EF不會執(zhí)行修改操作。相反如果此時設(shè)置實體狀態(tài)為“Modified”則EF執(zhí)行更新操作。那么既然EF的數(shù)據(jù)修改操作(增加、更新、刪除)是根據(jù)實體狀態(tài)而進(jìn)行的,那么為什么之前我們的增加操作能正常進(jìn)行而不用手動修改其狀態(tài)呢?原因是EF會自動發(fā)現(xiàn)狀態(tài)改變,在調(diào)用下面的方法時狀態(tài)發(fā)現(xiàn)是自動的:  

當(dāng)然,并不是所有的時候我們都需要EF自動發(fā)現(xiàn)狀態(tài)改變,設(shè)置 “DbContext.Configuration.AutoDetectChangesEnabled”屬性為“false”可以禁用自動發(fā)現(xiàn)功能。

刪除

 現(xiàn)在來看一下Entity Framework的刪除操作

當(dāng)然有了上面狀態(tài)跟蹤的討論相信大家也可以想到如下刪除方法:

上面兩種方法都會達(dá)到刪除的目的。

修改

修改數(shù)據(jù)很簡單,直接修改對應(yīng)的屬性即可:

需要說明的是,EF在執(zhí)行修改操作前會檢查哪些屬性發(fā)生了變化,并且只會修改發(fā)生變化的字段。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多