实体框架SaveChanges不起作用

时间:2016-12-23 10:11:54

标签: c# asp.net .net entity-framework entity-framework-4

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

没有例外。

我正在使用Entity Framework 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);
}

2 个答案:

答案 0 :(得分:7)

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

DemandeRageAnimaleDAO.ObjectStateManager.ChangeObjectState(editdemande, System.Data.EntityState.Modified);

在旧版本的Entity Framework中,您可以使用:

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();

问题中显示的方法可能不是完整的图片,也许实体已经脱离了。在这种情况下,您可以将其附加回上下文,将其标记为已修改并调用SaveChanges:

// Install the Java helper library from twilio.com/docs/java/install
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;

import java.net.URISyntaxException;

public class SmsSender {

// Find your Account Sid and Auth Token at twilio.com/console
public static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
public static final String AUTH_TOKEN = "your_auth_token";

public static void main(String[] args) throws URISyntaxException {
    Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

    Message message = Message
            .creator(new PhoneNumber("+14159352345"),  // to
                     new PhoneNumber("+14158141829"),  // from
                     "Where's Wallace?")
            .create();
}

答案 1 :(得分:1)

  

对象上下文必须知道将更改保存回数据源的对象的状态.ObjectStateEntry对象存储EntityState信息。 ObjectContext的SaveChanges方法处理附加到上下文的实体,并根据每个对象的EntityState更新数据源。有关更多信息,请参阅创建,添加,修改和删除对象。

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

_yourContext.ObjectStateManager.ChangeObjectState(editdemande, System.Data.EntityState.Modified);

4.1版本就像

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