久久亚洲精品国产精品_羞羞漫画在线版免费阅读网页漫画_国产精品久久久久久久久久久久_午夜dj免费观看在线视频_希崎杰西卡番号

net framework 2.0 sp2

前沿拓展:

net framework 2

Windows10已經(jīng)安裝了 .NET Framework 4.6.2 或版本更高的更新但是沒有.net framework是設(shè)置錯誤造成的,解決方法為:

1、在我的電腦C盤中,找到目錄C:Windows***.netFramework,可以看到已安裝的.net framework,可以選擇某個版本進(jìn)行注冊。

2、這里我們選擇.net framework 4.5進(jìn)行注冊,即選擇文件夾C:Windows***.netFrameworkv4.0.30319。

3、在文件夾中找到文件“aspnet_regiis.exe”。

4、打開命令行,將“aspnet_regiis.exe”拖到命令行中,輸氫均入 -i。

5、執(zhí)行命令,完成.net framework的重新注冊。

注意事項:

Windows 10**作系統(tǒng)在易用性和安全性方面有了極大的提升,除了針對云服務(wù)、智能移動設(shè)備、自然人機(jī)交互等新技術(shù)進(jìn)行融合外,還對固態(tài)硬完善與支持。


對于EF的**作,我們已經(jīng)有了大概的了解了,但對于實戰(zhàn)來說,似乎還欠缺著一些常用的功能,那就是批量的刪除,更新數(shù)據(jù)。

承接上面的部分,我們有一個叫做House的數(shù)據(jù)庫,其中包含house表和seller表。

一、使用原生EF如何實現(xiàn)批量刪除和修改?

//批量修改
public static bool UpdateAllPrice(decimal price)
{
bool isOk = false;
using (HouseEntities db = new HouseEntities())
{
var houseList = db.House.ToList();
//第一獲取所有房屋的列表(相當(dāng)于select * from house,雖然實際會把*替換為所有字段,這樣能提升性能)
houseList.ForEach(x => {
x.Price = price;//做一個foreach**作來把每一項的價格改為傳入的價格
db.Entry(x).State = System.Data.Entity.EntityState.Modified;//把修改后的實體標(biāo)為已修改
});
isOk = db.SaveChanges() > 0;//若修改數(shù)量大于0說明成功
}
return isOk;
}
//批量刪除
public static bool DeleteHouseByRegion(string region)
{
bool isOk = false;
using (HouseEntities db = new HouseEntities())
{
var houseList = db.House.Where(x=>x.Region==region).ToList();
//第一獲取符合條件的房屋的列表
houseList.ForEach(x =>
{
db.Entry(x).State = System.Data.Entity.EntityState.Deleted;//把修改后的實體標(biāo)為已刪除
});
isOk = db.SaveChanges() > 0;//若修改數(shù)量大于0說明成功
}
return isOk;
}

由上面的示例代碼可以看到。無論是批量刪除、修改部分?jǐn)?shù)據(jù),還是所有數(shù)據(jù)。第一都需要對**作對象進(jìn)行查詢并實例化,再使用遍歷方法對其進(jìn)行修改,刪除。

這種方式看起來十分奇怪,以前用SQL,Delete House where region=’xxx’,或者update house set price=123.123所能實現(xiàn)的功能,現(xiàn)在竟然浪費(fèi)了這么多的功夫,光是浪費(fèi)功夫也就算了,EF這種寫法在性能上也存在著十分巨大的問題(光是每次查詢就夠浪費(fèi)性能的了,更別說維護(hù)實例的狀態(tài),好在EF會對沒有更新的對象撤銷UPDATE**作,但感覺還是得不償失)。

那問題在這里已經(jīng)很明顯了,如何解決它呢?那就要用到entityframework中一個非常好用的擴(kuò)展“Entityframework.Extended”。這是一個開源的擴(kuò)展類庫,需要.NET 4.0以上的版本才能夠支持。你可以在nuget和github上找到它。它使用Lambda表達(dá)式樹的形式,對對象進(jìn)行了解析,在解析后直接生成SQL指令來完成數(shù)據(jù)庫**作,相比傳統(tǒng)SQL來說,這樣做不僅使我們的代碼更加優(yōu)美,在安全性和性能方面,也使我們更加放心。

二、Entityframework.Extended安裝

和其他類庫一樣,安裝的時候只要在NUGET上進(jìn)行搜索就行了,如果搜索不到請嘗試添加8.8.8.8來做DNS服務(wù)器(實在找不到就等等吧,國外網(wǎng)站經(jīng)常被墻,哪怕是正常的網(wǎng)站)。

net framework 2.0 sp2

如上圖所示即可完成安裝(什么?你找不到nuget?好吧,我想我的第一篇文章和VS右上角自帶的搜索框能幫助你。

三、使用Entityframework.Extended實現(xiàn)批量刪除和修改

//批量更新
public static bool UpdateAllPrice(decimal price)
{
bool isOk = false;
using (HouseEntities db = new HouseEntities())
{
isOk = db.House.Update(x => new House() { Price = price }) > 0;
//直接會生成update house set price=xxx的語句并返回受影響行數(shù),這里的X無實際作用,但作為MemberInitExpression,其卻是不可缺少的一個部分,這里要注意,不能先new對象再進(jìn)行對象傳輸,因為抓取準(zhǔn)確字段的時候,我們要用到init表達(dá)式,如果對象已經(jīng)被生成,所有非空字段都將被初始化,這對我們來說,完全不必要。
}
return isOk;
}
//批量刪除
public static bool DeleteHouseByRegion(string region)
{
bool isOk = false;
using (HouseEntities db = new HouseEntities())
{
isOk = db.House.Where(x => x.Region == region).Delete() > 0;//在where后面直接跟Delete就可以實現(xiàn)批量刪除了, 是不是很方便?
}
return isOk;
}

上面的代碼就是使用extended擴(kuò)展庫之后的寫法了,不僅整個代碼優(yōu)美了許多,更實現(xiàn)了更好的性能。在使用擴(kuò)展庫之前,別忘了引用EntityFramework.Extensions命名空間,擴(kuò)展類是沒有SDK自動提醒的。

另外,大家有沒有發(fā)現(xiàn)?我之前說的,修改,刪除,添加**作后一定要savingchanges(),這里沒寫,是不是錯了?當(dāng)然不是,擴(kuò)展庫直接生成了SQL語句并采用了ADO.NET的方式進(jìn)行了執(zhí)行,所以并不需要寫savingchanges,在這些擴(kuò)展方法執(zhí)行之后就會返回受影響的行數(shù)了。

拓展知識:

原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請注明出處:http://www.cddhlm.com/33859.html