当前位置: 首页 > 编程语言 > C#

每个请求的上下文:如何更新实体共享

时间:2023-04-10 21:26:10 C#

每个请求的上下文:如何更新实体我有一个存储库类,如下所示。有一个获取实体对象的方法——GetPaymentByID。我正在检索Payment对象并更改其PaymentType属性。但这并没有反映在数据库中。我知道原因-SaveContextChanges方法使用新上下文。我需要使用ContextPerRequest方法。所以我在每个方法中创建新的上下文。在这种情况下,如何修改代码才能成功更新数据库呢?注意:客户端程序不应使用ObjectContext,因为可以使用另一个不使用EntityFramework的存储库更改存储库。注意:“DataContext很轻,创建起来并不昂贵”namespaceMyRepository{publicclassMyPaymentRepository{privatestringconnectionStringVal;publicMyPaymentRepository(){SqlConnectionStringBuildersqlBuilder=newSqlConnectionStringBuilder();sqlBuilder.DataSource=".";sqlBuilder.InitialCatalog="图书馆预约系统";sqlBuilder.IntegratedSecurity=true;//初始化EntityConnectionStringBuilder。EntityConnectionStringBuilderentityBuilder=newEntityConnectionStringBuilder();entityBuilder.Provider="System.Data.SqlClient";entityBuilder.ProviderConnectionString=sqlBuilder.ToString();entityBuilder.Metadata=@"res://*/MyEDMtest.csdl|res://*/MyEDMtest.ssdl|res://*/MyEDMtest.msl";connectionStringVal=entityBuilder.ToString();}publicMyEntityDataModelEDM.PaymentGetPaymentByID(intpaymentID){MyEntityDataModelEDM.Paymentpayment;使用(varmyObjectContext2=newMyEntityDataModelEDM.LibraryReservationSystemEntities(connectionStringVal)){Funcpredicate=(p=>p.PaymentID==paymentID);payment=myObjectContext2.Payments.SingleOrDefault(predicate);}退货;}publicvoidSaveContextChanges(MyEntityDataModelEDM.PaymentpaymentEntity){使用(varmyObjectContext=newMyEntityDataModelEDM.LibraryReservationSystemEntities(connectionStringVal)){myObjectContext.SaveChanges();}}}}客户MyRepository.MyPaymentRepositoryrep=newMyRepository.MyPaymentRepository();MyEntityDataModelEDM.Paymentp2=rep.GetPaymentTypeByID(1);p2.TeSS"";rep.SaveContextChanges(p2);阅读添加/追加和实体状态:http://blogs.msdn.com/b/adonet/archive/2011/01/29/using-dbcontext-in-ef-feature-ctp5-part-4-add-attach-and-entity-states.aspx初始化实体框架上下文的最佳方法是什么?EntityFramework4.1:如何使用per-call生命周期数据上下文?从EF4.1上下文生命周期管理和工作单元模式实体框架中的上下文正确附加和分离实体存储库EF4中的多个对象上下文-Context.Entry不可用于更改您需要添加(如果数据是新的)或追加的实体状态(如果数据被编辑)上下文的对象:http://blogs.msdn.com/b/adonet/archive/2011/01/29/using-dbcontext-in-ef-feature-ctp5-part-4-add-attach-and-entity-states.aspx这几个方面:以上是C#学习教程:每个请求的上下文:如何更新实体共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——/使用您自己的逻辑来确定“新”实体myObjectContext.Entry(paymentEntity).State=(paymentEntity.PaymentID==default(int))?EntityState.Added:EntityState.Modified;myObjectContext.SaveChanges();}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: