2013-08-23 59 views
0

是否有任何方法來初始化具有集合的實體框架實體中的屬性?初始化已有構造函數的實體框架中的屬性

這是一個實體生成的代碼,有一個集合:

public partial class MyEntity 
{ 
    public MyEntity() 
    { 
     this.MySubEntities = new HashSet<MySubEntity>(); 
    } 

    public bool IsActive {get; set;} 
    public virtual ICollection<MySubEntity> MySubEntities {get; set;} 
} 

如果我需要一個新的MyEntity,我想默認爲IsActive = true,它不能這樣做! (除非我編輯T4模板。)

請告訴我有一種方法來默認IsActive = True而不編輯生成的文件(或T4)。

注意:我有AutoMapper爲我製作實體,所以new MyEntity {IsActive = true}將不起作用。

回答

0

沒有編輯T4,我沒有看到你能做什麼。

所以,你可以改變你的T4產生類似的東西(在吸氣初始化空列表,而不是做,在構造函數)

private ICollection<MySubEntity> mySubEntities_; 
public virtual ICollection<MySubEntity> MySubEntities { 
    get { 
     return mySubEntites_ ?? (mySubEntites_ = new HashSet<MySubEntity>()); 
    } 
    set { 
     mySubEntities_ = value; 
    } 
} 

,那麼你就不需要在生成的類空的構造函數,並可能有部分類空構造函數,做什麼,你需要

public MyEntity() { 
    IsActive = true; 
} 
0

我不知道......但我會給你一些方向,所以你可以看一看。

如果你將你的數據庫的默認值設置爲IsActive = true,我相信EF自己處理它。如果不是,我敢肯定你可以在Designer上設置默認值。

我想你也可以做另一個構造函數,因爲這是部分類。

您可能會看到:How to set default value for POCO's in EF CF?可能會給您更多的見解。

另一種解決方案(實用但不好,並沒有回答問題),是將IsActive更改爲IsInactive,因此它默認爲false:D - 我在設計數據庫時真的這樣做。

相關問題