Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF 4 can';我似乎不想改变_C#_.net_Wcf_Entity Framework_Wcf Data Services - Fatal编程技术网

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)