C# 实体框架保存更改不起作用

C# 实体框架保存更改不起作用,c#,asp.net,.net,entity-framework,entity-framework-4,C#,Asp.net,.net,Entity Framework,Entity Framework 4,我有这段代码,但它不起作用,我看不出问题出在哪里 没有发现任何例外 我正在使用实体框架4。SaveChanges调用在数据库中似乎没有任何作用 try { Demande_Rage_Animale editdemande = DemandeRageAnimaleDAO.First(s => s.ID == demandebean.ID); //frombeanTodemande(demandebean, editdemande); editdemande.num_

我有这段代码,但它不起作用,我看不出问题出在哪里

没有发现任何例外

我正在使用实体框架4。SaveChanges调用在数据库中似乎没有任何作用

try
{
    Demande_Rage_Animale editdemande = DemandeRageAnimaleDAO.First(s => s.ID == demandebean.ID);

    //frombeanTodemande(demandebean, editdemande);
    editdemande.num_rapport = "111111";

    //editdemande.EntityState.
    DemandeRageAnimaleDAO.SaveChanges();
}
catch (Exception ex)
{
    Logger.Error("==> Modifier_demande_RageAnimale : " + ex.InnerException);
}

在调用SaveChanges之前,必须将实体标记为已修改:

DemandeRageAnimaleDAO.Entry(editdemande).State = EntityState.Modified;
DemandeRageAnimaleDAO.SaveChanges();
var editdemande = DemandeRageAnimaleDAO.First(s => s.ID == demandebean.ID);

// whatever happens here?

DemandeRageAnimaleDAO.Demande_Rage_Animale.Attach(editdemande);
editdemande.num_rapport = "111111";
DemandeRageAnimaleDAO.ObjectStateManager.ChangeObjectState(editdemande, System.Data.EntityState.Modified);
DemandeRageAnimaleDAO.SaveChanges();
在旧版本的Entity Framework中,您可以使用:

DemandeRageAnimaleDAO.ObjectStateManager.ChangeObjectState(editdemande, System.Data.EntityState.Modified);
问题中显示的方法可能不是全貌,可能实体已经分离。在这种情况下,您可以将其附加回上下文,将其标记为已修改并调用SaveChanges:

DemandeRageAnimaleDAO.Entry(editdemande).State = EntityState.Modified;
DemandeRageAnimaleDAO.SaveChanges();
var editdemande = DemandeRageAnimaleDAO.First(s => s.ID == demandebean.ID);

// whatever happens here?

DemandeRageAnimaleDAO.Demande_Rage_Animale.Attach(editdemande);
editdemande.num_rapport = "111111";
DemandeRageAnimaleDAO.ObjectStateManager.ChangeObjectState(editdemande, System.Data.EntityState.Modified);
DemandeRageAnimaleDAO.SaveChanges();
对象上下文必须知道对象的状态,才能将更改保存回数据源。ObjectStateEntry对象存储EntityState信息。SaveChanges方法处理附加到上下文的实体,并根据每个对象的EntityState更新数据源。有关详细信息,请参见创建、添加、修改和删除对象

在使用EF 4.0的情况下,您需要调用此

_yourContext.ObjectStateManager.ChangeObjectState(editdemande, System.Data.EntityState.Modified);
在版本4.1中,它的完成方式如下

_yourContext.Entry(editdemande).State = System.Data.EntityState.Modified;

InnerException消息是什么?您是否也可以发布DemanderAganimaledao的实现?您是否可以提供异常消息?如果没有引发异常,这似乎是正确的答案。严重性代码描述项目文件行抑制状态错误CS1061'IGenericDAO'不包含“Entry”的定义,并且没有扩展名可以找到接受类型为“IGenericDAO”的第一个参数的方法“Entry”。是否缺少using指令或程序集引用?问题中显示的方法是完整的还是缺少部分?两个答案中给出的代码应该都能正常工作。对象需求的类型是什么?我假设这是实体框架生成的数据库上下文。这段代码似乎正常工作,但仍然没有任何变化。如果调用ChangeObjectState并使用Attacheditdemande,会发生什么?这里有它给出的文档:{无法附加对象,因为它已经在对象上下文中。对象只有在处于未更改状态时才能重新附加。}如何查看sql Generated?可以使用yourContext.Database.Log=Console.Write;