2014-12-11 2 views
0

Ниже часть класса СЧЕТА из нашего проекта:Entity Framework: как я могу обнаружить изменения, внесенные в сущность в другой форме?

public abstract class Invoice 
{ 
    public int InvoiceId { get; set; } 
    public int Status { get; set; } 
    public virtual ObservableCollection<OrderRequestStatus> OrderRequestStatuses { get; set; } 
    public EnumType.Follow Follow {get; set; 
    public string FicheNo { get; set; } 
    public DateTime Date_ { get; set; } 
    public DateTime? DueDate_ { get; set; } 
    public DateTime? ShipmentDateEstimated { get; set; } 
    public DateTime? ShipmentDate { get; set; } 
    public string DoCode { get; set; } 
    public int AccountId{ get; set; } 
    public virtual AccountLayer.Account Account { get; set; } 
    public int? SourceIndex{ get; set; } 
    public int CurrencyTypeId { get; set; } 
    public virtual CommonLayer.CurrencyType CurrencyType { get; set; } 
    public double CurrencyRate { get; set; } 
    public CommonLayer.InvoicePricing Price { get; set; } 
    public string GenExp1 { get; set; } 
    public string GenExp2 { get; set; } 
    public string GenExp3 { get; set; } 
    public string GenExp4 { get; set; } 
    public int? LogoInvoiceLogicalRef { get; set; } 
    public CommonLayer.TableLog Added { get; set; } 
    public CommonLayer.TableLog Edited { get; set; } 
    public CommonLayer.TableLog Cancelled { get; set; } 
    public virtual ObservableCollection<StoredProcedures.sp_OtherSalesandOffers> sp_OtherSalesandOffers { get; set; } 

public Invoice() 
    { 
     OrderRequestStatuses = new ObservableCollection<OrderRequestStatus>(); 
     sp_OtherSalesandOffers = new ObservableCollection<StoredProcedures.sp_OtherSalesandOffers>(); 
     Price = new CommonLayer.InvoicePricing(); 
     Added = new CommonLayer.TableLog(); 
     Edited = new CommonLayer.TableLog(); 
     Cancelled = new CommonLayer.TableLog(); 

    } 

Относящиеся код Контекст:

public TaksimGroupContext() 
     : base("Name=TaksimGroupContext") 

    { 
     this.Configuration.LazyLoadingEnabled = true; 
     this.Configuration.ValidateOnSaveEnabled = true; 
     this.Configuration.AutoDetectChangesEnabled = true; 
     this.Configuration.ProxyCreationEnabled = true; 
    } 

У нас есть две формы: 1- ФАКТУРЫ 2- ФАКТУРЫ ПОДРОБНОСТИ

Форма 1 СЧЕТ ОБРАТНОЙ СВЯЗИ код

private void DataBind_grdInvoices() 
    { 
     (from a in base._Context.Invoices 
      orderby a.Date_ 
      where a.Date_ > DateTime.Today.AddDays(-3650); 
      select a 
      ).Load(); 

      grdInvoicess.DataSource = base._Context.Invoices.Local.ToBindingList(); 
    } 

Форма 2 ОПИСАНИЕ: Invoice

Данные загружаются с той же логикой, как описано выше

Проблема в том:

Мы загружаем ФАКТУРУ from.Then мы выбираем один счет и открыт INVOICE DETAULS форму, которая содержит заголовок счета-фактуры (из класса счета-фактуры) и сведения о счете-фактуре (из класса Stline)

При внесении любых изменений в счет-фактуру (НЕ ДЕТАЛИ), например, мы меняем учетную запись, а затем сохраняем изменения, эти изменения не распознаются формой INVOICE.

EDIT: Точнее, эти изменения не обнаружены (которые мы также не пытаемся) не отразили на сетке.

Где мы делаем ошибку или какой другой метод мы должны соблюдать?

Заранее спасибо.

+0

Как вы пытаетесь «обнаружить» изменения в форме СЧЕТА? –

+0

Я не хочу :) Не должно быть автоматическим? Потому что я привязываю его к BindingList? См. Edit: Обнаружено и отражено должно быть более точным. –

+0

Я понимаю проблему сейчас. Ожидается, что он будет автоматически обновляться в первой форме. Вы используете Winforms для этого? –

ответ

0

base._Context.ObjectStateManager сохраняет изменения, которые происходят в контексте, независимо от формы их отредактированные в.

Вы можете использовать base._Context.ObjectStateManager.GetObjectStateEntry, чтобы получить ObjectStateEntry для вашего объекта счета-фактуры, которые держат его оригинал и текущие значения в свойствах OriginalValues ​​и CurrentValues.

Вы можете получить имена свойств, измененных с помощью метода GetModifiedProperties

source

+0

Итак, как мы можем обнаружить изменения, сделанные на другой форме, на один и тот же объект? –

+0

проверить мой ответ, я обновил его –

+0

Привет, спасибо за обновление, есть ли метод, параметр, с помощью которого измененные значения автоматически отражаются на другие формы? –

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