我做了一个小型的HomeDAL库,我有一个类,有连接,断开连接,添加,删除,showbooks等功能来管理我的数据库。
现在我在WPF做客户端。在MainWindow
中,我的HomeDAL中有一个此类的变量,我有一个Button
“添加新记录”。单击此按钮将打开一个新窗口,其中我有一些TextBox
es来描述新记录和Button
“Make”。单击此“制作”按钮,我关闭第二个窗口。
我想在HomeDAL
中使用变量MainWindow
来运行其中一个函数,但它不起作用,应用程序崩溃。
以下是我在第二个窗口中的功能:
private void btnOkClicked(object sender, RoutedEventArgs e)
{
MainWindow test = (MainWindow)this.Parent;
Book newBook = new Book()
{
Tytul = tbTytul.Text,
Autor = tbAutor.Text,
Cena = Int32.Parse(tbCena.Text),
Przeczytane = tbPrzeczytane.Text
};
test.SqlConn.InsertBook(newBook);
this.Close();
}
关于我的程序崩溃原因的任何提示?
答案 0 :(得分:0)
由于您的应用程序中有DAL层,我建议基于
进行以下操作MainWindow
HomeDAL
。 步骤将是
Make
按钮时,您将创建一个Book
类型的对象并填充值。HomeDAL
创建一个对象,例如var dal = new HomeDAL()
或使用Unity
之类的IOC。注意:Page是为每个请求创建的对象,如果您已经拥有DAL图层,则不必将数据访问与表示层混淆。
在这种情况下,您的样本将如下所示
private void btnOkClicked(object sender, RoutedEventArgs e)
{
Book newBook = new Book()
{
Tytul = tbTytul.Text,
Autor = tbAutor.Text,
Cena = Int32.Parse(tbCena.Text),
Przeczytane = tbPrzeczytane.Text
};
var dal = new HomeDAL(); // pass any initialization parameters if required for the DAL to self initialize.
var newBookId = dal.CreateBook(newBook);
// use some mechanism to show the newly created book id to the user or else redirect the user to the grid that shows the books sorted by creation date so that the book he created now will be shown as the first one.
}
请告诉我们您对此实施的理解并分享您的想法。