C# 访问实体对象然后保存它
我正在尝试获取并更新/添加我对EmailSetting记录所做的更改 这是我的密码:C# 访问实体对象然后保存它,c#,entity-framework,C#,Entity Framework,我正在尝试获取并更新/添加我对EmailSetting记录所做的更改 这是我的密码: public partial class EmailSetting { private Entities entities; public IEnumerable<EmailSetting> GetEmailSettings() { try { if (entities == null) {
public partial class EmailSetting
{
private Entities entities;
public IEnumerable<EmailSetting> GetEmailSettings()
{
try
{
if (entities == null)
{
entities = Entities.DefaultConnection();
}
return from x in entities.EmailSettings select x;
}
catch (Exception ex)
{
MiscClasses.Logging.Log(MethodBase.GetCurrentMethod().Name, "An error occurred attempting to GetEmailSettings.", ex);
throw;
}
}
public EmailSetting GetDefaultEmailSetting()
{
try
{
if (entities == null)
{
entities = Entities.DefaultConnection();
}
return (from x in entities.AppSettings select x.EmailSetting).FirstOrDefault();
}
catch (Exception ex)
{
MiscClasses.Logging.Log(MethodBase.GetCurrentMethod().Name, "An error occurred attempting to GetDefaultEmailSetting.", ex);
throw;
}
}
public void SaveDefaultEmailSetting(EmailSetting emailSetting)
{
try
{
entities.SaveChanges();
}
catch (Exception ex)
{
MiscClasses.Logging.Log(MethodBase.GetCurrentMethod().Name, "An error occurred attempting to GetDefaultEmailSetting.", ex);
throw;
}
}
}
公共部分类设置
{
私营实体;
公共IEnumerable GetEmailSettings()
{
尝试
{
如果(实体==null)
{
entities=entities.DefaultConnection();
}
从实体中的x返回。EmailSettings选择x;
}
捕获(例外情况除外)
{
Misclasses.Logging.Log(MethodBase.GetCurrentMethod().Name,“试图获取电子邮件设置时出错。”,例如);
投掷;
}
}
公共电子邮件设置GetDefaultEmailSetting()
{
尝试
{
如果(实体==null)
{
entities=entities.DefaultConnection();
}
返回(从entities.AppSettings中的x选择x.EmailSetting).FirstOrDefault();
}
捕获(例外情况除外)
{
Misclasses.Logging.Log(MethodBase.GetCurrentMethod().Name,“尝试GetDefaultEmailSetting时出错。”,ex);
投掷;
}
}
public void SaveDefaultEmailSetting(EmailSetting EmailSetting)
{
尝试
{
entities.SaveChanges();
}
捕获(例外情况除外)
{
Misclasses.Logging.Log(MethodBase.GetCurrentMethod().Name,“尝试GetDefaultEmailSetting时出错。”,ex);
投掷;
}
}
}
问题是,如果我添加一条记录,它不会在SaveDefaultEmail设置下保存,当我有一条新记录时,它不会做任何事情。如何在保存时检查记录是否已添加或更新,然后根据其状态进行保存?举个例子,如果要将这些方法添加到
电子邮件设置
类中,这些方法应完成更新并创建事务
public void AddEmailSetting(EmailSetting-EmailSetting)
{
尝试
{
entities.EmailSetting.Add(EmailSetting);
entities.SaveChanges();
}
捕获(例外情况除外)
{
Misclasses.Logging.Log(MethodBase.GetCurrentMethod().Name,“尝试GetDefaultEmailSetting时出错。”,ex);
投掷;
}
}
public void UpdateEmailSetting(EmailSetting EmailSetting)
{
尝试
{
entities.EmailSetting.Update(EmailSetting);
entities.SaveChanges();
}
捕获(例外情况除外)
{
Misclasses.Logging.Log(MethodBase.GetCurrentMethod().Name,“尝试GetDefaultEmailSetting时出错。”,ex);
投掷;
}
}
而且,将实体注入到它跟踪的对象中似乎很奇怪?也许这是我不熟悉的模式
我将采用的方法是,要么使用一个单独的类来管理实体,要么只注入dbContext并对我从上下文中需要的实体执行CRUD操作
例如,假设您有一个控制器(dbContext被注入到您的控制器中),该控制器接收您想要添加的对象(遵循相同的模式进行更新),您将执行以下操作:
[路由(“~/add”)]
公共IActionResult添加(EmailSetting EmailSetting)
{
//无论您想在这里执行什么样的空检查或验证。
_dbContext.EmailSetting.Add(EmailSetting);
_dbContext.SaveChanges();
//添加后返回或重定向到任何视图/方法。
}
对于更新,您将遵循相同的模式,更改路由和方法名称,然后对于
\u dbContext.EmailSetting.Update(对象)代码> 无法添加的代码在哪里?@JosieG.Bigler我已经更新了问题,这是否回答了您的问题?我看不出您正在向实体添加电子邮件设置
。您应该在某个地方执行entities.Emailsetting.Add(emailSettingObject)然后调用entities.SaveChanges()代码>如果它是更新而不是添加,会发生什么?然后调用entities.Emailsetting.update(emailSettingObject)然后是实体。SaveChanges()代码>