我正在尝试使用linq更新数据库中的列。以下是我用来更新用户ID的代码。我也尝试更新名称。不过,我无法更新记录。
DMS_GenericDataContext db = new DMS_GenericDataContext();
Document_Master doc1 = db.Document_Masters
.Where(c => c.Document_Id_Prefix == "PRD_TST_TST1_T2_" && c.Document_Id == "2")
.Single();
doc1.User_IDD = "anuragnigam";
db.SubmitChanges();
答案 0 :(得分:1)
尝试
db.SaveChanges();
这会将在此上下文中所做的所有更改保存到底层数据库。 这是一个完整的主题,可以帮助您处理更新:Update Entity using DBContext
更新:您的版本似乎已经足够好了,您的实体/表必须有主键,主键有助于识别表并将其实例与其他实例区分开来
答案 1 :(得分:1)
using(DMS_GenericDataContext db = new DMS_GenericDataContext())
{
Document_Master doc1 = db.Document_Masters
.Where(c => c.Document_Id_Prefix == "PRD_TST_TST1_T2_" && c.Document_Id == "2")
.SingleOrDefault();
// If the record exists, then make the corresponding update.
if(doc1!=null)
{
doc1.User_IDD = "anuragnigam";
db.SaveChanges();
}
}
当您使用像DataContext这样的一次性对象时,请尝试使用using语句。此外,您应该使用SingleOrDefault()而不是使用Single(),因为如果您使用后者并且没有任何类似您正在查找的记录,您将获得异常。另一方面,如果使用SingleOrDefault(),则不会出现异常。如果db中没有记录,您将获得一个null对象。最后但并非最不重要的,您应该检查Document_Master是否为空。如果不是,那意味着您的数据库中存在记录,您可以进行相应的更新。
答案 2 :(得分:1)
要更新现有但已断开连接的对象,您需要attach
它执行数据上下文。
“附加”有一个可选的bool
参数,可视为已修改。
doc1.User_IDD = "anuragnigam";
db.Document_Masters.Attach(doc1);
db.SubmitChanges();