Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理已删除数据场景的最佳位置是哪里?_C#_.net_Wpf_Mvvm - Fatal编程技术网

C# 处理已删除数据场景的最佳位置是哪里?

C# 处理已删除数据场景的最佳位置是哪里?,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,我有一个使用MVVM模型的WPF应用程序。此外,我们确实需要使用ShowDialog()在Dialog()中显示一些数据。为此,我们有一个MainWindow调用另一个类中的另一个方法,该方法将实际返回Window类型的对象。然后,主窗口将通过调用ShowDialog()方法显示此窗口。window类具有ViewModel,其中包含对话框中显示的数据 我的问题是如何处理数据库中不存在数据的情况 Window()或ViewModel的构造函数(确切地说是哪一个)是否应该引发异常?如果是,那么什么类

我有一个使用MVVM模型的WPF应用程序。此外,我们确实需要使用ShowDialog()在Dialog()中显示一些数据。为此,我们有一个MainWindow调用另一个类中的另一个方法,该方法将实际返回Window类型的对象。然后,主窗口将通过调用ShowDialog()方法显示此窗口。window类具有ViewModel,其中包含对话框中显示的数据

我的问题是如何处理数据库中不存在数据的情况


Window()或ViewModel的构造函数(确切地说是哪一个)是否应该引发异常?如果是,那么什么类型的异常?有没有其他方法来处理这种情况?

您没有列出用例,因此无法得到最佳答案,因为答案取决于您的用例、域和用户

也就是说,您不太可能希望您的用户看到异常,即使它实际上是异常的。最好是在对话框中显示信息性消息(即“没有要显示的项目”),或者干脆不显示

HTH,

Berryl

无论您是否调用ShowDialog,您的用户界面、窗口都不应干扰数据的获取以及数据是否存在于MVVM中。您应该将UI和数据访问逻辑分开。我想只有OP可以决定是否应用上述注释,但如果您确实有一个数据访问层,而该层不返回任何数据,您的UI应该知道这一点,并向用户发出适当的通知,这听起来是可行的。如何处理错误取决于您,但显然,为多个窗口编写相同的错误处理弹出窗口是一种浪费-我想你可以使用某种聚合器,它位于MainWindow VM级别,拦截这些异常情况,并在弹出窗口中显示适当的消息,以更好地显示你的规范,从您显示的信息的来源来看,如果它来自数据库,则没有问题,因为它来自数据库,如果不是,则可能应该添加到数据库中。