2014-12-23 51 views
0

比方說,我有一個POCO與財產等當POCO實體實體框架中被初始化檢測

public class Person 
{ 
    private string _firstName; 
    public string FirstName 
    { 
     get { return _firstName; } 
     set 
     { 
      _firstName = value; 
      // DO STUFF; 
     } 
    } 
} 

當對象是由EF初始化,我只想_firstName進行設置,沒有別的,只有在對象被初始化之後,我是否需要一個集合來運行其餘的// DO STUFF;

+1

EF確實不是爲此設計的。這不是不可能的,但幾乎總是比重構其他代碼更多的工作來避免這種需要。你能解釋一下,你希望通過使'FirstName'的行爲有所不同,取決於它的被調用時間嗎?瞭解真正的問題可能會提供一種更簡單的替代方法。 – hvd

+0

我認爲最好的選擇是在您的數據庫中創建一個具有相同POCO類結構的VIEW,並且只返回FirstName列的值,其他列的值爲null。從VIEW中讀取而不是原始表格。 –

回答

0

你爲什麼不乾脆

  1. 聲明屬性setter爲protected;和
  2. 公開你的// DO STUFF行爲作爲一種適當的方法SetFirstName(string firstName)

事情是這樣的:

public class Person 
{ 
    public string FirstName { get; protected set; } 

    public string SetFirstName(string value) 
    { 
     _firstName = value; 
     // DO STUFF; 
    } 
} 

乾淨多了,也不需要 「破解」 EF可言。

+0

這不會工作,因爲我的屬性綁定到一個Windows窗體控件,但是,雖然創建了一個不同的屬性來綁定控件,然後它將獲取/設置EF屬性,但是會工作。 – user1601421

+0

好的,我明白了你的觀點。我相信你的解決方法可能會奏效。但是如果我是你,我會將綁定到表單控件的對象從EF實體中分離出來,因爲它們顯然會有明顯的響應性(表示規則與數據庫持久性)。 – rsenna