真的很抱歉打扰但是我迷路了。下面的代码令我头疼。它第一次运行它部分更新数据库,然后它不再更新它。 cm.LogoPath第一次从null更改为指定值,但cm.LogoOriginalPath未持久保存到DB(在断点处,它显示它具有值,并且该Entity设置为“已修改”)。 它运行的所有其他时间都不会更新任何内容,即使我更改了要更新的属性或要保留的值。
using (EMSDataModelContainer db = new EMSDataModelContainer())
{
NotificationMsg msg = new NotificationMsg();
ContactMaster cm = db.ContactMasters.Where(c => c.ContactMasterId == ContactMasterID).FirstOrDefault();
if (cm.LogoPath != null)
{
msg = ImagesUpload.DeleteImage(cm.LogoOriginalPath, "", cm.LogoPath);
}
msg = ImagesUpload.UploadLogo(rauLogo.UploadedFiles[0].InputStream, "HotelLogo", HotelController.ContactMasterId.ToString(), rauLogo.UploadedFiles[0].GetExtension().ToString().ToLower());
if (msg.MsgType.ToString() != "Error")
{
cm.LogoOriginalPath = "https://s3.amazonaws.com/seeam-imgs-test/" + "HotelLogo/" + HotelController.ContactMasterId.ToString() + "-Original" + rauLogo.UploadedFiles[0].GetExtension().ToString().ToLower();
cm.LogoPath = "https://s3.amazonaws.com/seeam-imgs-test/" + "HotelLogo/" + HotelController.ContactMasterId.ToString() + ".jpg";
db.ContactMasters.ApplyCurrentValues(cm);
}
db.SaveChanges();
}
除此之外,这种保存设置已经在整个应用程序中运行得很好。 最后一点信息,LogoPath和OriginalLogoPath是稍后添加的2 db表列。我从数据库更新了模型。
编辑:简单地说,现在这样的事情并没有保存变化:
using (EMSDataModelContainer context = new EMSDataModelContainer())
{
ContactMaster c = context.ContactMasters.Where(i => i.ContactMasterId == ContactMasterID).Single();
c.LogoOriginalPath = "Why is not saving";
context.ContactMasters.ApplyCurrentValues(c);
context.SaveChanges();
context.Dispose();
}
任何方向都会欣赏它。