我创建了一个我想在各种项目中使用的静态类。我试图让它尽可能独立,但它没有更新,我没有收到任何错误消息。我正在使用.Net Framework 4.0客户端。
以下是代码:
using System;
using System.Linq;
namespace SSS.ServicesConfig.data
{
public partial class GlobalSetting
{
public static GlobalSetting GetGlobalSetting()
{
try
{
using (var context = new SuburbanEntities())
{
return (from gs in context.GlobalSettings
select gs).FirstOrDefault();
}
}
catch (Exception ex)
{
Logging.Log("An error occurred.", "GetGlobalSetting", Apps.ServicesConfig, ex);
throw new Exception(string.Format("Unable to retrieve data: [{0}].", ex.Message));
}
}
public static void SaveGlobalSettings(GlobalSetting globalSetting)
{
using (var context = new SuburbanEntities())
{
context.Attach(globalSetting);
context.SaveChanges();
}
}
}
}
附件没有以正确的方式完成吗?如果没有,我应该如何保存它?
答案 0 :(得分:2)
您必须将状态设置为已修改:
context.Attach(globalSetting);
context.Entry(globalSetting).State = EntityState.Modified;
context.SaveChanges();
答案 1 :(得分:1)
如果我理解正确的话,我建议你尝试在两种方法中删除using语句,并以这种方式声明上下文,或者更好的是保持本地上下文变量的私有变量。
var context = new SuburbanEntities())
context.Attach(globalSetting);
context.SaveChanges();
答案 2 :(得分:1)
我知道您在ObjectContext
API中,因此将实体标记为已更改的方式为:
context.ObjectStateManager
.ChangeObjectState(globalSetting, EntityState.Modified);
将对象附加到上下文后。
答案 3 :(得分:0)
必须将其标记为已修改,请尝试
context.Attach(globalSetting);
var gs = context.Entry(globalSetting);
gs.State = EntityState.Modified;
context.SaveChanges();