2011-08-03 36 views
1

我有以下BLL類,它提供的工具在數據庫中添加,更新和刪除特定類型的元素:爲什麼在插入後不會刷新DataContext集合?

public class Asset 
{ 
    private Data.DicDataContext _db; 
    public Asset(int assetID) 
{ 
    _db = new Data.DicDataContext(); 
    _asset = _db.Assets.First(a => a.id == assetID); 
} 
    public static Asset New(int assetTypeID, int containerID) 
{ 
     Asset nAsset; 
     using (Data.DicDataContext db = new Data.DicDataContext()) 
     { 
      Data.Asset asset = new Data.Asset(); 

      asset.typeID = assetTypeID; 
      asset.containerID = containerID; 
      asset.createdDate = DateTime.Now; 

      Data.User user = (Data.User)db.Users.First(u => u.id == Convert.ToInt32(HttpContext.Current.Session["user"])); 

      user.Assets.Add(asset); 
      db.SubmitChanges(); 

      nAsset = new Asset(asset.id); 
     } 
     return nAsset; 
} 
} 

的問題出現了,當我添加新元素與資產數據庫。新()。該元件正確保存在數據庫中,但是當我嘗試收集與新的資產()構造器新添加的元素,該元素不是序列中發現的。

任何幫助將是非常感激!

回答

0

你需要改變你的代碼,所以它看起來是這樣的。

public Asset(int assetID) 
{ 
    using (Data.DicDataContext db = new Data.DicDataContext()) 
    { 
     _asset = db.Assets.First(a => a.id == assetID); 
    } 
} 

請注意它是不是一個真正的好做法,以保持連接打開,以便大家參考拿出來的Data.DicDataContext()

此行private Data.DicDataContext _db;

你必須在每一個方法的using。就像在你的新方法中一樣。

+0

只是一個快速的修正,我覺得你的意思是說db.Assets,不_db.Assets因爲就像你說_db應該被刪除。 – Richard

+0

@Richard,這就是正確的,對不起,現在修復。複製和粘貼。 :P – Jethro

+0

@Jethro,感謝您的快速答覆!有點難以離開這個好酒吧'重新使用一切政治。然而,下一個newb問題 - 我如何永久保存_asset?它似乎只保存對資產的引用,並且當我關閉DC時,引用已經消失。 – Marle1