EF 4 не может вызвать SaveChanges - PullRequest
0 голосов
/ 01 апреля 2011

У меня есть этот контекст со следующим переопределением метода:

  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 ]

1 голос
/ 01 апреля 2011

Это не то, что я пытался сделать сам, но возможно, что, поскольку вы уже находитесь внутри метода SaveChanges (), список изменений контекста уже создан. Поэтому, когда вы добавляете вашу новую Contract в коллекцию контекста Contracts, вам придется заставить свой контекст перестраивать свой список изменений, которые необходимо сохранить обратно в базу данных перед вызовом base.SaveChanges ()

0 голосов
/ 01 апреля 2011

Я подключился к пользовательскому классу Context (класс MyContext: DbContext), и он не работал.

Я наконец прибег к подключению к классу службы данных WCF (класс MyDataService: DataService), и он работает хорошо.

0 голосов
/ 01 апреля 2011

Вместо этого вам нужно подключиться к событию SavingChanges ObjectContext . Это позволит вам сохранить в архив / таблицу аудита. Вот статья , в которой объясняется, как это сделать. Я делал это раньше, и это работает очень хорошо.

...