C# EF 4 can';我似乎不想改变
我使用以下方法覆盖此上下文:C# EF 4 can';我似乎不想改变,c#,.net,wcf,entity-framework,wcf-data-services,C#,.net,Wcf,Entity Framework,Wcf Data Services,我使用以下方法覆盖此上下文: public class MyContext : DbContext { public DbSet<Contract> Contracts{get;set;} public override int SaveChanges() { Contract ctr = new Contract { ContractId = "CT99999991",
public class MyContext : DbContext
{
public DbSet<Contract> Contracts{get;set;}
public override int SaveChanges()
{
Contract ctr = new Contract
{
ContractId = "CT99999991",
ContractNumber = "9000",
LastModifiedDate = DateTime.Now,
GracePeriod = DateTime.Now,
ShipByDate = DateTime.Now,
ExpirationDate = DateTime.Now
};
this.Contracts.Add(ctr);
return base.SaveChanges();
}
}
公共类MyContext:DbContext
{
公共数据库集契约{get;set;}
公共覆盖int SaveChanges()
{
合同ctr=新合同
{
construcd=“ct9999991”,
ContractNumber=“9000”,
LastModifiedDate=日期时间。现在,
GracePeriod=日期时间。现在,
ShippyDate=日期时间。现在,
ExpirationDate=DateTime.Now
};
本.合同.新增(ctr);
返回base.SaveChanges();
}
}
无论我做了什么尝试,我都无法成功地使这部分代码成功。
我希望在SaveChanges事件发生时将上层合约保存在数据库中。
有什么我忽略了吗?这不是我自己尝试过的,但可能因为您已经在SaveChanges()方法中,上下文的变更列表已经创建。因此,当您将新的
契约
添加到上下文的契约
集合中时,您必须让上下文重新生成其更改列表,这些更改需要在调用base.SaveChanges()之前保留回数据库。这将允许您保存到存档/审核表。这就解释了怎么做。我以前做过,效果非常好。我挂接到自定义上下文类(类MyContext:DbContext),但它不起作用
我最后求助于连接到WCF数据服务类(类MyDataService:DataService),它工作得很好。是的,你做错了!j/k,您可能想发布错误消息/exception.Hi stefan,当我通过更新和保存对象来执行代码时,没有引发异常。也许这有助于更好地理解您为什么要重写SaveChanges()方法?@BrandonZeider,无论何时添加或修改合同,我都会尝试将数据保存到存档表中。如何使上下文重新生成其更改列表?我没有尝试过这样做,但在
ObjectContext
上(我假设DbContext
的工作方式大致相同)有一个DetectChanges()
方法,该方法应使用新更改更新ObjectStateManager
。让它重新计算每个加载的条目似乎效率低下,所以您可以尝试直接与ObjectStateManager
交互,我认为应该是this.ObjectStateManager.ChangeObjectState(ctr,EntityState.Added)代码>