Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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#_.net_Entity Framework_Entity Framework 6 - Fatal编程技术网

C# 更新实体时出错

C# 更新实体时出错,c#,.net,entity-framework,entity-framework-6,C#,.net,Entity Framework,Entity Framework 6,我这里有点麻烦 当我尝试更新实体时,会引发此异常: Store update、insert或delete语句影响了意外的行数(0)。自加载实体后,实体可能已被修改或删除。刷新ObjectStateManager条目 我到处找,但没有成功 模型: public class Projeto { public int Id { get; set; } public int Codigo { get; set; } public string Descricao { get; s

我这里有点麻烦

当我尝试更新实体时,会引发此异常:

Store update、insert或delete语句影响了意外的行数(0)。自加载实体后,实体可能已被修改或删除。刷新ObjectStateManager条目

我到处找,但没有成功

模型:

public class Projeto
{
    public int Id { get; set; }
    public int Codigo { get; set; }
    public string Descricao { get; set; }
    public virtual Cliente Cliente { get; set; }
    public DateTime DataInicio { get; set; }
    public DateTime DataFim { get; set; }
    public string NumeroContrato { get; set; }

    public virtual ICollection<Funcionario> Funcionarios { get; set; }
}

public class Cliente
{
    public int Id { get; set; }
    public int Codigo { get; set; }
    public string Nome { get; set; }
    public virtual Endereco Endereco { get; set; }
    public virtual Contato Contato { get; set; }
    public string CNPJ { get; set; }
}

public class Funcionario
{
    public int Id { get; set; }
    public int Codigo { get; set; }
    public string Nome { get; set; }
    public DateTime DataAdmicao { get; set; }
    public string NomePai { get; set; }
    public string NomeMae { get; set; }

    public virtual ICollection<Projeto> Projetos { get; set; }
}

“萨尔法”不等于这个,我做了一个总结。但事实就是这样

首先,确保您的
FirstOrDefault()
方法返回任何对象:

projeto.Cliente = _dao.Cliente.FirstOrDefault(x => x.Id == projeto.Cliente.Id);

您是否确定您的
projeto.Cliente.Id
已设置为适当的Id(或者根本没有设置任何
Id

您应该首先将
项目附加到上下文,然后进行更改:

// Attach:
_dao.Entry(projeto).State = System.Data.Entity.EntityState.Attached;
// Change:
projeto.Cliente = _dao.Cliente.FirstOrDefault(x => x.Id == projeto.Cliente.Id);
另外,请确保在修改前加载了
projeto.Cliente
,否则更改跟踪器不会注意到更改


请注意,如果您想将其作为模型的一部分,还可以设置基本外键值
ClienteId
。它将为您节省一些
Cliente
对象。(寻找外键关联与独立关联)。

是的,我确信这会返回一个有效的“客户”。它不起作用。我试过了。“项目”只是一个模型。并且也尝试过插入外键,不也会出现同样的错误。
// Attach:
_dao.Entry(projeto).State = System.Data.Entity.EntityState.Attached;
// Change:
projeto.Cliente = _dao.Cliente.FirstOrDefault(x => x.Id == projeto.Cliente.Id);