entity framework:ObjectStateEntry错误

我有使用entity framework的代码,如下所示。 我得到了以下的激动。 这是什么原因? 怎么克服这个?

ObjectStateManager不包含ObjectStateEntry,它引用了“MyEntityDataModelEDM.Payment”类型的对象。

注意:我根据Context Per Request:如何更新实体中的回复编写了此代码

在此处输入图像描述

public class MyPaymentRepository { private string connectionStringVal; public MyPaymentRepository() { SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder(); sqlBuilder.DataSource = "."; sqlBuilder.InitialCatalog = "LibraryReservationSystem"; sqlBuilder.IntegratedSecurity = true; // Initialize the EntityConnectionStringBuilder. EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); entityBuilder.Provider = "System.Data.SqlClient"; entityBuilder.ProviderConnectionString = sqlBuilder.ToString(); entityBuilder.Metadata = @"res://*/MyEDMtest.csdl|res://*/MyEDMtest.ssdl|res://*/MyEDMtest.msl"; connectionStringVal = entityBuilder.ToString(); } public MyEntityDataModelEDM.Payment GetPaymentByID(int paymentID) { MyEntityDataModelEDM.Payment payment; using (var myDatabaseContext = new MyEntityDataModelEDM.LibraryReservationSystemEntities(connectionStringVal)) { Func predicate = (p => p.PaymentID == paymentID); payment = myDatabaseContext.Payments.SingleOrDefault(predicate); } return payment; } public void UpdateDBWithContextChanges(MyEntityDataModelEDM.Payment paymentEntity) { using (var myDatabaseContext = new MyEntityDataModelEDM.LibraryReservationSystemEntities(connectionStringVal)) { myDatabaseContext.ObjectStateManager.ChangeObjectState(paymentEntity, System.Data.EntityState.Modified); myDatabaseContext.SaveChanges(); } } } 

客户

  static void Main(string[] args) { MyRepository.MyPaymentRepository rep = new MyRepository.MyPaymentRepository(); MyEntityDataModelEDM.Payment p2 = rep.GetPaymentByID(1); p2.PaymentType = "CHANGE"; rep.UpdateDBWithContextChanges(p2); } 

参考:

  1. ObjectStateManager不包含带有对象引用的ObjectStateEntry

您没有先将它附加到上下文中。 请参阅引用问题的答案 。