我有以下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中,但是当我尝试使用新的Asset()构造函数收集新添加的元素时,序列中找不到该元素。
任何帮助都会非常感激!
答案 0 :(得分: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
。就像你的新方法一样。