2016-03-06 122 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