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

本文关键字:刷新 插入 DataContext 集合 为什么 | 更新日期: 2023-09-27 18:04:27

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

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中,但是当我尝试使用新的Asset()构造函数收集新添加的元素时,元素在序列中找不到。

任何帮助将非常感激!

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

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

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在每一个方法。就像你的New Method一样