我在學(xué)習(xí)用三層開發(fā)(當(dāng)然我是菜鳥)、底層ORM Linq2Sql看Bll 的代碼?? ?public class Area?? ? {?? ? ? ? public EntitiesDataContext Entities = new EntitiesDataContext();?? ? ? ?/// <summary>?? ? ? ?/// 還回所有行?? ? ? ?/// </summary>?? ? ? ?/// <returns></returns>?? ? ? ?public IQueryable<TbArea> GetAll()?? ? ? ?{?? ? ? ? ? ?return Entities.TbArea;?? ? ? ?} }操作public class AreaController : Controller{?? ? ? ?public Area Area = new Area();?? ? ? ?public ActionResult Display(string id)?? ? ? ? {?? ? ? ? ? ?var area = Area.GetEntityById(id) ?? new TbArea().Initialize();?? ? ? ? ? ?return View(area);?? ? ? ?}}每次代碼運(yùn)行到?public Area Area = new Area();它都會(huì)執(zhí)行一次public EntitiesDataContext Entities = new EntitiesDataContext();感覺(jué)很費(fèi)資源。請(qǐng)問(wèn)我要怎么作優(yōu)化?
4 回答

拉風(fēng)的咖菲貓
TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
最簡(jiǎn)單的辦法是在Area里加一個(gè)靜態(tài)變量public static Area Instance=new Area();然后全都通過(guò)這個(gè)變量訪問(wèn)Area,Area.Instance.GetEntityById(id),你控制器里也不需要實(shí)例化Area類了,訪問(wèn)Instance就夠了

一只斗牛犬
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
public EntitiesDataContext Entities = new EntitiesDataContext();
直接把這個(gè)變成靜態(tài)變量就可以了

白板的微信
TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
Linq 下用單例模式 你會(huì)發(fā)現(xiàn),數(shù)據(jù)庫(kù)更新了數(shù)據(jù),而查詢出來(lái)的數(shù)據(jù)去沒(méi)有改變! 就因?yàn)檫@樣,我才不用 單例模式的。
請(qǐng)高手指點(diǎn)
請(qǐng)高手指點(diǎn)
- 4 回答
- 0 關(guān)注
- 216 瀏覽
添加回答
舉報(bào)
0/150
提交
取消