C# 每个请求的上下文:如何更新实体
我有一个存储库类,如下所示。有一个获取实体对象的方法–GetPaymentByID。我正在检索付款对象并更改其PaymentType属性。但这并没有反映在数据库中。我知道原因——SaveContextChanges方法使用了新的上下文 我需要对每个请求使用上下文方法。因此,我在每个方法中创建新的上下文 在这种情况下,如何修改代码以成功更新数据库 注意:客户端程序不应使用ObjectContext,因为可以使用另一个不使用Entity Framework的存储库更改存储库 注意:“DataContext是轻量级的,创建起来并不昂贵” 阅读C# 每个请求的上下文:如何更新实体,c#,.net,entity-framework,design-patterns,domain-driven-design,C#,.net,Entity Framework,Design Patterns,Domain Driven Design,我有一个存储库类,如下所示。有一个获取实体对象的方法–GetPaymentByID。我正在检索付款对象并更改其PaymentType属性。但这并没有反映在数据库中。我知道原因——SaveContextChanges方法使用了新的上下文 我需要对每个请求使用上下文方法。因此,我在每个方法中创建新的上下文 在这种情况下,如何修改代码以成功更新数据库 注意:客户端程序不应使用ObjectContext,因为可以使用另一个不使用Entity Framework的存储库更改存储库 注意:“DataCont
public void SaveContextChanges(MyEntityDataModelEDM.Payment paymentEntity)
{
using (var myObjectContext = new MyEntityDataModelEDM.LibraryReservationSystemEntities(connectionStringVal))
{
// use your own logic for determining a "new" entity
myObjectContext.Entry(paymentEntity).State =
(paymentEntity.PaymentID == default(int)) ?
EntityState.Added :
EntityState.Modified;
myObjectContext.SaveChanges();
}
}
请参阅行new MyEntityDataModelEDM.LibraryReservationSystemEntities()。我在这里创造一个新的环境,不是吗?此上下文如何知道在以前的上下文对象中所做的更改?将状态设置为
Modified
会告诉上下文实体已修改,应在数据库中更新。物体从哪里来并不重要。我在这种方法中遇到了错误。请看
MyRepository.MyPaymentRepository rep = new MyRepository.MyPaymentRepository();
MyEntityDataModelEDM.Payment p2= rep.GetPaymentByID(1);
p2.PaymentType = "TeSSS";
rep.SaveContextChanges(p2);
public void SaveContextChanges(MyEntityDataModelEDM.Payment paymentEntity)
{
using (var myObjectContext = new MyEntityDataModelEDM.LibraryReservationSystemEntities(connectionStringVal))
{
// use your own logic for determining a "new" entity
myObjectContext.Entry(paymentEntity).State =
(paymentEntity.PaymentID == default(int)) ?
EntityState.Added :
EntityState.Modified;
myObjectContext.SaveChanges();
}
}