EF6 Master Detail

时间:2016-03-06 20:23:20

标签: c# wpf entity-framework datagrid visual-studio-2015

我正在使用VisualStudio 2015和SqlServerExpress2015。

我在SQLExpress中有3个表:

SQL Server 3 tables

我开始在VisualStudio 2015中创建一个新的WPF Projetct 我添加了一个新项目 - Ado.NET实体数据模型 我从数据库中选择EF Designer

我有这个模型。

Visual Studio 2015

我从Object获取数据源 并将ProductBase添加为Grid。 我还将Validation_Duration_Days和Validation_Amount添加为Edit Field。

main xaml

然后我点了下面的代码。

    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。 我还可以更改数据库中存在IF数据的持续时间或有效数量值。

我的问题: 当我在列表中添加一行(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 个答案:

没有答案