2013-07-15 99 views
1

使用實體框架代碼首先,我創建了一些對象來將數據存儲在我的數據庫中。我在這些對象中實現ReactiveUI庫中的ReactiveObject類,因此,只要prorerty更改爲響應更快的用戶界面,我就會收到通知。不要在實體框架中映射ReactiveUI屬性

但是,實現這個添加了3個屬性,即Changed,Changing和ThrowExceptions到我的對象。我不認爲這是一個問題,但是當在DataGrid中加載表時,這些都會得到一個列。

有沒有辦法隱藏這些屬性?我不能手動定義列,因爲我有1個數據網格爲我所有的表,這是我從一個組合框中選擇..

發現的解決方案下方,也可在這裏:Is there a way to hide a specific column in a DataGrid when AutoGenerateColumns=True?

void dataTable_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
    { 
     List<string> removeColumns = new List<string>() 
     { 
      "Changing", 
      "Changed", 
      "ThrownExceptions" 
     }; 

     if (removeColumns.Contains(e.Column.Header.ToString())) 
     { 
      e.Cancel = true; 
     } 
    } 

回答

5

有幾個方法用Code First做到這一點。第一個選項是註釋與NotMappedAttribute屬性:

[NotMapped] 
public bool Changed { get; set; } 

現在,這是爲您的信息。由於您繼承基類並且無法訪問該類的屬性,因此不能使用該屬性。第二個選擇是使用Fluent ConfigurationIgnore方法:

modelBuilder.Entity<YourEntity>().Ignore(e => e.Changed); 
modelBuilder.Entity<YourEntity>().Ignore(e => e.Changing); 
modelBuilder.Entity<YourEntity>().Ignore(e => e.ThrowExceptions); 

要訪問DbModelBuilder,覆蓋OnModelCreating方法在DbContext

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    // .. Your model configuration here 
} 

另一種選擇是創建一個類繼承EntityTypeConfiguration<T>

public abstract class ReactiveObjectConfiguration<TEntity> : EntityTypeConfiguration<TEntity> 
    where TEntity : ReactiveObject 
{ 

    protected ReactiveObjectConfiguration() 
    { 
     Ignore(e => e.Changed); 
     Ignore(e => e.Changing); 
     Ignore(e => e.ThrowExceptions); 
    } 
} 

public class YourEntityConfiguration : ReactiveObjectConfiguration<YourEntity> 
{ 
    public YourEntityConfiguration() 
    { 
     // Your extra configurations 
    } 
} 

這種方法的優點是您可以爲所有ReactiveObject定義一個基準配置並擺脫所有定義的冗餘。

有關上述鏈接中有關Fluent Configuration的更多信息。

+0

我已經嘗試在OnModelCreating中添加Ignore,但列仍然顯示在我的數據網格中。我認爲這是因爲DataGrid不知道這些屬性在實體框架中被忽略 – Kryptoxx

+0

經過一番挖掘,我發現這個問題解決了我剩下的問題:http://stackoverflow.com/questions/4000132/is-there-a隱藏特定列的數據網格當autogeneratecolumns感謝您的快速答案! – Kryptoxx

+0

@TomVandenbussche很高興你能找到相關答案!我正要寫關於DataGrid配置。 ;) –

相關問題