2016-03-06 102 views
1

我使用VisualStudio 2015和SqlServerExpress2015。EF6主細節

我有3個表中的SQLExpress:

SQL Server 3 tables

我startet在VisualStudio的2015年創建一個新的WPF Projetct 我添加了一個新項目 - Ado.NET實體數據模型 我選擇從EF設計數據庫

我得到這個模型。

Visual Studio 2015

我從交鋒對象 一個數據源,並添加了ProductBase作爲一個網格。 我還將Validation_Duration_Days和Validation_Aount添加爲編輯字段。

main xaml

然後我國防部的follwoing編碼。

public partial class MainWindow : Window 
{ 
    CarWashFlatEntities2 context = new CarWashFlatEntities2(); 

    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 

     System.Windows.Data.CollectionViewSource productBaseViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("productBaseViewSource"))); 
     // Laden Sie Daten durch Festlegen der CollectionViewSource.Source-Eigenschaft: 
     context.ProductBase.Load(); 
     productBaseViewSource.Source = context.ProductBase.Local; 

    } 

    private void button_Click(object sender, RoutedEventArgs e) 
    { 


     context.SaveChanges(); 
     productBaseDataGrid.Items.Refresh(); 

    } 

    protected override void OnClosing(System.ComponentModel.CancelEventArgs e) 

    { 

     base.OnClosing(e); 

     this.context.Dispose(); 

    } 

} 

}

結果是,我可以添加BaseProducts。 我也可以更改數據庫中存在數據的持續時間或有效數量值。

我的問題: 當我在列表(productbase)中添加一行並在Vality_Amount文本框中輸入一些值時,這是行不通的。 我該怎麼做? 向ProductBase添加一個新行,並向具有相同ProductBaseID的ProductPrePaid添加一個新行。

這裏是我的模型: ProductBase.cs

public partial class ProductBase 
{ 
    public int ProductBaseID { get; set; } 
    public string Name { get; set; } 

    public virtual ProductFlatRate ProductFlatRate { get; set; } 
    public virtual ProductPrePaid ProductPrePaid { get; set; } 
} 

ProductFlatRate.cs

public partial class ProductFlatRate 
{ 
    public int ProductBaseID { get; set; } 
    public int Validity_Duration_Days { get; set; } 

    public virtual ProductBase ProductBase { get; set; } 
} 

ProductPrePaid.cs

public partial class ProductPrePaid 
{ 
    public int ProductBaseID { get; set; } 
    public int Validity_Amount { get; set; } 

    public virtual ProductBase ProductBase { get; set; } 
} 
+0

對於初學者來說,不使用部分類爲您的模型,第2只是創建擁有所有這3類領域的又一Model類。 然後輸入其中的所有屬性,然後將它們添加到您的上下文中。 – Aizen

+1

在您嘗試實現繼承時,您沒有將模型配置爲了解您的層次結構。參見[this](http://stackoverflow.com/questions/22263189/entity-framework-db-first-implement-inheritance/22263190#22263190)回答。 – Ashkan

+0

它爲CodeFirst方法正確配置。但它是部分階級,它應該是一個具體的階級。 – Aizen

回答

0

@Ashkan使我在正確的軌道。 對於comunity, TPT or TPH

而且Ashkan後看到這裏 see here