Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存实体框架对象时正在删除现有实体框架对象_C#_Entity Framework_Entity Framework 6 - Fatal编程技术网

C# 保存实体框架对象时正在删除现有实体框架对象

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

我有一个信息页面,正在使用实体框架发布到数据库中。一切正常,但当我最初输入一条记录并点击save两次时,该记录将从数据库中删除(它实际上在第一次单击save后保存)。此问题不反映在修改中,而发生在新条目中

这是我的密码

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)仅在用户创建行时第一次执行。如果我修改任何现有记录并双击,那么它工作正常。这种情况只有在有新记录时才会发生。