C# 为什么插入后DataContext集合不刷新?

C# 为什么插入后DataContext集合不刷新?,c#,linq-to-sql,datacontext,C#,Linq To Sql,Datacontext,我有以下BLL类,它提供了在db中添加、更新和删除特定类型元素的工具: 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(i

我有以下BLL类,它提供了在db中添加、更新和删除特定类型元素的工具:

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;
}
}
当我使用Asset.new()向db添加新元素时,问题就出现了。元素正确地保存在db中,但是当我尝试使用new Asset()构造函数收集新添加的元素时,在序列中找不到该元素


任何帮助都将不胜感激

您需要更改代码,使其看起来像这样

public Asset(int assetID)
{
   using (Data.DicDataContext db = new Data.DicDataContext())
    {
        _asset = db.Assets.First(a => a.id == assetID);
    }
}
请注意,保持连接打开并不是一个好的做法,因此请删除对
Data.DicDataContext()的引用

此行
private Data.DicDataContext\u db


您必须在每个方法中使用
。就像你的新方法一样。

只是一个快速更正,我想你的意思是说db.Assets,而不是像你所说的那样将db.Assets删除。@Richard,这是正确的,抱歉,现在可以解决了。复制和粘贴:P@Jethro,谢谢你的快速回答!很难把好的东西都用在政治上。下一个新问题是——如何永久保存_资产?它似乎只保存了对资产的引用,当我关闭DC时,引用就消失了。我们回到绘图板,为我们的BBL模式提出了一种完全不同的方法。谢谢你的帮助