C# 保存实体框架对象时正在删除现有实体框架对象
我有一个信息页面,正在使用实体框架发布到数据库中。一切正常,但当我最初输入一条记录并点击save两次时,该记录将从数据库中删除(它实际上在第一次单击save后保存)。此问题不反映在修改中,而发生在新条目中 这是我的密码C# 保存实体框架对象时正在删除现有实体框架对象,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,我有一个信息页面,正在使用实体框架发布到数据库中。一切正常,但当我最初输入一条记录并点击save两次时,该记录将从数据库中删除(它实际上在第一次单击save后保存)。此问题不反映在修改中,而发生在新条目中 这是我的密码 public async Task<IHttpActionResult> Put(int id, [FromBody]CandidateLanding landing) { var result = await candidateContext.Candida
public async Task<IHttpActionResult> Put(int id, [FromBody]CandidateLanding landing)
{
var result = await candidateContext.CandidateLanding
.Where(x => x.UserID == id)
.AsNoTracking()
.SingleOrDefaultAsync();
if (result != null)
{
if (landing.ID == 0)
{
landing.ID = result.ID;
}
}
if (ModelState.IsValid)
{
if (landing.ID > 0)
{
candidateContext.Entry(landing).State = EntityState.Modified;
}
else
{
landing.UserID = id;
candidateContext.CandidateLanding.Add(landing);
}
await candidateContext.SaveChangesAsync();
}
return CreatedAtRoute("DefaultApi", new { id = landing.ID }, landing);
}
public异步任务Put(int-id,[FromBody]CandidateLanding)
{
var结果=等待candidateContext.CandidateLanding
.Where(x=>x.UserID==id)
.AsNoTracking()
.SingleOrDefaultAsync();
如果(结果!=null)
{
如果(landing.ID==0)
{
landing.ID=result.ID;
}
}
if(ModelState.IsValid)
{
如果(landing.ID>0)
{
candidateContext.Entry(landing.State=EntityState.Modified;
}
其他的
{
landing.UserID=id;
candidateContext.CandidateLanding.Add(landing);
}
等待candidateContext.saveChangesSync();
}
返回CreatedAtRoute(“DefaultApi”,新的{id=landing.id},landing);
}
我并不完全清楚,但根据代码,如果用户双击,我希望它首先执行.Add(landing)代码,然后第二次执行.State=modified代码。是否正确?如果创建新平台,id参数的值是多少?数据库中的id列是自动inc列吗?@stephen.vakil..你完全正确。and.Add(landing)仅在用户第一次创建行时执行。@Martin..yes Martin其auto inc列来自DB。@stephen.vakil。and.Add(landing)仅在用户创建行时第一次执行。如果我修改任何现有记录并双击,那么它工作正常。这种情况只有在有新记录时才会发生。