2010-04-06 17 views
2

我是實體框架的新手,請原諒我的無知。我們有一個使用SQL Server和ADO.Net編寫的簡單應用程序。現在我們得到了一個新的要求,即當應用程序更新某個特定的行時,必須發生一些業務邏輯。我一直在研究SQL Server中的觸發器,看起來我們可以使用觸發器來完成它。我也在看實體框架的OnPropertyChange功能。 「OnPropertyChange」可以做到嗎?OnPropertyChange作爲替代實體框架中的觸發器

我的意思是,我可以創建一個模型並實現「OnPropertyChange」方法嗎?當我們的應用程序使用ADO.Net修改行時,它會觸發「OnPropertyChange」事件,以便我的「OnPropertyChange」中的客戶代碼執行?

回答

5

觸發器在數據庫表本身發生動作時發生。如果您執行更新並具有更新觸發器,則無論您是使用實體框架還是直接針對該表寫入更新語句,都會發生這種情況。這裏是SQL Server Triggers的參考。

編輯 如果你希望發生的自定義業務邏輯,要麼所屬或不屬於你可以做以下的數據庫:

private string _myProperty;  
    public string MyProperty 
    { 
     get 
     { 
      return _myProperty; 
     } 
     set 
     { 
       if (_myProperty != value) 
       { 
       _myProperty = _value; 
       OnPropertyChanged("MyProperty"); 
       DoSomethingWithMyProperty(_myProperty); 
       } 
      } 
    } 

DoSomethingWithMyProperty方法,你可以做任何你想做比如是否更新你的用戶界面或數據庫。

+0

謝謝您的回覆。我的問題是,如果應用程序修改了數據庫中的字段(單元格),那麼在另一個應用程序中調用OnPropertyChange? – jaklucky 2010-04-08 13:37:40

+0

Silverlight/WCF中提供的OnPropertyChanged方法屬於類屬性成員。在.NET中調用OnPropertyChanged將讓.NET知道更改,而不是數據庫。但是,當您將更改保存回數據庫時,已執行更新表上的觸發器。那有意義嗎? – 2010-04-08 16:41:49

+0

謝謝。我想它回答了我的問題。所以,觸發是當時我的情況。 – jaklucky 2010-04-09 13:33:25