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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

什么時候應(yīng)該調(diào)用DbContext.dispose()實體框架?這種假想的方法不好嗎?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;}這是否更好,也就是說,在使用using()時不應(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貢獻1875條經(jīng)驗 獲得超5個贊

實際上,這是兩個問題合二為一:

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

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

答案:

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

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


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


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

TA貢獻1820條經(jīng)驗 獲得超2個贊

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


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



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

TA貢獻1801條經(jīng)驗 獲得超8個贊

您可以將數(shù)據(jù)庫上下文定義為類字段,然后實施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;

    }

}


查看完整回答
反對 回復(fù) 2019-11-29
  • 3 回答
  • 0 關(guān)注
  • 914 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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