EF 4似乎无法调用SaveChanges

时间:2011-04-01 03:01:56

标签: 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",
            ContractNumber = "9000",
            LastModifiedDate = DateTime.Now,
            GracePeriod = DateTime.Now,
            ShipByDate = DateTime.Now,
            ExpirationDate = DateTime.Now
        };
        this.Contracts.Add(ctr);
        return base.SaveChanges();
    }
  }

无论我尝试什么,我都无法成功地让这部分代码成功。 我很乐意在SaveChanges事件发生时将上部合同保存在数据库中。 我有什么东西可以忽略吗?

3 个答案:

答案 0 :(得分:1)

这不是我自己试图做的事情,但有可能因为你已经在SaveChanges()方法中,所以已经创建了上下文的更改列表。因此,当您将新的Contract添加到上下文的Contracts集合时,您必须在重新调用base.SaveChanges()之前重建其需要持久化回数据库的更改列表。 / p>

答案 1 :(得分:0)

你应该做的是挂钩SavingChanges event of the ObjectContext。这将允许您保存到存档/审计表。 Here is an article解释了如何做到这一点。我以前做过这件事并且效果很好。

答案 2 :(得分:0)

我正在使用自定义Context类(类MyContext:DbContext)并且它无法正常工作。

我最终使用了挂钩到WCF数据服务类(类MyDataService:DataService),它运行良好。