2015-03-03 44 views

回答

0

明確回答沒有。 但是這取決於你如何與EF交互(代碼優先,模型優先,數據庫優先)。 如果使用EF 6和代碼第一種方法,你可以使用基實體類

public class BaseEntity 
{ 
    public DateTime ChangedAt {get;set;} 
} 

public class ConcreteEntity : BaseEntity 
{ 
    public string Name {get;set;} 
} 

現在ConcreteEntity具有ChangedAt通過繼承的想法。 如果此解決方案不適合您,請詳細解釋問題。

+0

OP希望爲每列Bla添加列BlaChangedAt,並自動加上它。所以我會說「答案是否定的」。 – abatishchev 2015-03-04 19:23:44

1

通常這樣的行爲應該直接實現到您的業務邏輯中,而不是自動進入數據層。因此,我建議寫這樣的事:

// entity 
public class Order 
{ 
    public bool Confirmed { get; set; } 
    public DateTime? ConfirmedAt { get; set; } 
} 

// business logic 
public class OrderManager 
{ 
    ................. 
    public void Confirm(Order order) 
    { 
     // changing of entity status 
     order.Confirmed = true; 
     order.ConfirmedAt = DateTime.Now; 

     // storing new entity status 
     _orderRepository.Update(order); 
     ................ 
    } 
} 
+0

這不是問題。 – 2015-03-04 20:49:09

1

我想,如果我理解正確的話,你期待的實體框架能夠自動列添加到數據庫中,這樣你就不必添加它們手動,那麼你有兩種情況:

  1. ,如果你正在使用的數據庫第一種方法,你可以通過查詢這是您的具體需要根據你的條件添加這些列 爲你實現這個 。
  2. 如果您使用的是代碼優先方法,並且您有現有的數據庫,則可以使用Entity Framework Power Tools對數據庫進行逆向工程,並且可以自定義T4模板以生成具有所需額外屬性的實體。
相關問題