当数据库在带有 EF 的 WPF 中不可用时,我试图捕获异常。我在 C# 中将 MVVM 和 Repo 模式与 IUnityContainer 一起使用。
我的问题是,如果数据库不可用,程序会在视图后面的代码中的 InitializeComponent() 语句上崩溃。我已经尝试搜索捕获异常和错误处理等,并且大多数建议都围绕 Try Catch 逻辑,这是意料之中的。我试图将语句包装在如下的 try-catch 块中,但它仍然在 InitalizeComponent 的同一位置崩溃。
Public MyListView() {
try {
IntializeComponent();
} catch (Exception) {
throw;
}
}
我还尝试在代码的其他各个点添加 Try-Catch 块,例如初始化数据库的位置:
Database.SetInitializer(new DataInitialiser());
Unity 容器的注册位置:
_container.RegisterType<IRepo<MyList>, MyListRepo>(new TransientLifetimeManager());
以及加载数据的位置:
MyLists = new ObservableCollection<MyList>(await _repo.GetAllAsync());
我想保留 MVVM 模式,以便捕获异常并从 ViewModel 中为用户提供优雅的响应。所以我的具体问题是当数据库不可用时我在哪里可以捕获异常。
提前致谢。