第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

實(shí)體框架和調(diào)用context.dispose()

實(shí)體框架和調(diào)用context.dispose()

什么時(shí)候應(yīng)該調(diào)用DbContext.dispose()實(shí)體框架?這種假想的方法不好嗎?public static string GetName(string userId){    var context = new DomainDbContext();    var userName = context.UserNameItems.FirstOrDefault(x => x.UserId == userId);    context.Dispose();    return userName;}這是否更好?public static string GetName(string userId){    string userName;    using(var context = new DomainDbContext()) {        userName = context.UserNameItems.FirstOrDefault(x => x.UserId == userId);        context.Dispose();    }    return userName;}這是否更好,也就是說(shuō),在使用using()時(shí)不應(yīng)該調(diào)用context.Dispose()嗎?public static string GetName(string userId){    string userName;    using(var context = new DomainDbContext()) {        userName = context.UserNameItems.FirstOrDefault(x => x.UserId == userId);    }    return userName;}
查看完整描述

3 回答

?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

實(shí)際上,這是兩個(gè)問(wèn)題合二為一:

  1. 我應(yīng)該何時(shí)Dispose()上下文?

  2. 我的背景壽命應(yīng)該是什么?

答案:

  1. 永遠(yuǎn)不會(huì) 1。using是隱Dispose()在一個(gè)try-finally塊中。Dispose較早發(fā)生異常時(shí),可能會(huì)丟失單獨(dú)的語(yǔ)句。此外,在最常見(jiàn)的情況下,不是要求Dispose所有(隱或顯式)是不會(huì)對(duì)人體有害。

  2. 參見(jiàn)例如Entity Framework 4-Winform應(yīng)用程序中的上下文壽命/范圍。簡(jiǎn)而言之:壽命應(yīng)該是“短的”,靜態(tài)上下文是不好的。


1正如某些人所評(píng)論的,該規(guī)則的一個(gè)例外是,上下文是實(shí)現(xiàn)IDisposable自身并共享其生命周期的組件的一部分。在這種情況下,您需要調(diào)用組件context.Dispose()Dispose方法。


查看完整回答
反對(duì) 回復(fù) 2019-11-29
?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊

我遵循了一些使用EF的很好的教程,但它們沒(méi)有處理上下文。


我對(duì)此感到有點(diǎn)好奇,我注意到即使是受人尊敬的Microsoft VIP也不會(huì)處理上下文。我發(fā)現(xiàn)您在正常情況下不必將dbContext處置。



查看完整回答
反對(duì) 回復(fù) 2019-11-29
?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以將數(shù)據(jù)庫(kù)上下文定義為類(lèi)字段,然后實(shí)施IDisposable。如下所示:


public class MyCoolDBManager : IDisposable

{

    // Define the context here.

    private DomainDbContext _db;


    // Constructor.

    public MyCoolDBManager()

    {

        // Create a new instance of the context.

        _db = new DomainDbContext();

    }


    // Your method.

    public string GetName(string userId)

    {           

        string userName = _db.UserNameItems.FirstOrDefault(x => x.UserId == userId);


        return userName;

    } 


    // Implement dispose method.

    // NOTE: It is better to follow the Dispose pattern.

    public void Dispose()

    {

         _db.dispose();

         _db = null;

    }

}


查看完整回答
反對(duì) 回復(fù) 2019-11-29
  • 3 回答
  • 0 關(guān)注
  • 929 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)