2016-05-31 5 views
-1

Я пытаюсь переопределить SaveChanges DbContect с помощью Entity Framework.DbContext Override SaveChanges не работает

В

переопределение INT SaveChanges()

не работает и обкатки точка не попала.

Я переместил класс в корень, где находится файл EDMX, но это все еще не помогло.

Как можно получить SaveChanges переопределить?

using System; 
using System.Data.Entity; 

namespace DAL 
{ 
    public class MyEntities : DbContext 
    { 
     public override int SaveChanges() 
     { 
      throw new Exception("override DbContext>SaveChanges working"); 
      // return base.SaveChanges(); 
     } 
    } 
} 

код для вызова SaveChanges

using (var ctx = new Entities()) 
      { 
       // model.clientID = data.clientID; 
       // model.clientGUID = data.clientGUID; 
       model.clientName = data.clientName; 
       model.clientDept = data.clientDept; 
       model.clientWebsite = data.clientWebsite; 
       model.clientEmail = data.clientEmail; 
       model.isActive = data.isActive; 
       model.clientModDate = data.clientModDate; 
       model.clientCreatedDate = data.clientCreatedDate; 

       ctx.Clients.Add(model); 
       ctx.SaveChanges(); 
      } 

File/Solution code

+0

Вы вызываете метод SaveChanges() в любом месте? Вы можете показать код вызова? – bassfader

+0

@bassfader вопрос обновлен с помощью примера кода SaveChange() –

+3

Ваш вызывающий код создает экземпляр 'Entities', который не совпадает с классом' MyEntities', который вы опубликовали. – sstan

ответ

0

Самым простым способом: класс EF определяются с "частичным". Так добавить еще один файл класса с именем класса существа:

public partial class MyEntities 
{ 
    public void SavingChanges() 
    { 
     //Do custom code 

     this.SaveChanges(); 
    } 
} 

И изменить все ваши SaveChanges() вызовов SavingChanges(). Затем вы можете настроить процесс, как хотите. Ключ состоит в том, чтобы добавить еще один частичный класс, поэтому убедитесь, что контекст EF имеет частичную определенность (не в вашем примере кода, а в качестве реализации по умолчанию).

0

Мне удалось получить код, используя предоставленные комментарии.

  1. Создать файл класса в том же проекте EDMX находится
  2. государственных образований разделяемого класса < --- такое же имя, как проекта Entity

все работают сейчас

Смежные вопросы