[英]Designer Issue + Entity Framework (WPF MVVM)
在后台,這是一個WPF項目,它使用實體框架,當運行良好時,只是設計器會產生以下錯誤。
未處理的異常在配置中找不到指定的命名連接,或者不打算與EntityClient提供程序一起使用,或者無效。
我已將連接字符串處理到UI,但這仍然是一個問題
我有以下綁定
DataContext="{Binding Source={x:Static ViewModel:ViewModelLocator.MainWindowViewModelStatic}}"
與初始化的類有關
new MainWindowViewModel(new UIDataProvider());
其中具有以下
private readonly IUIDataProvider _dataProvider;
private IList<Customer> _customers;
public IList<Customer> Customers
{
get
{
if (_customers == null)
{
GetCustomers();
}
return _customers;
}
}
public MainWindowViewModel(IUIDataProvider dataProvider)
{
_dataProvider = dataProvider;
Tools = new ObservableCollection<ToolViewModel>();
Tools.Add(new AToolViewModel());
Tools.Add(new BToolViewModel());
}
private void GetCustomers()
{
_customers = _dataProvider.GetCustomers();
}
設計人員實際上在設計時實例化您的代碼。 您的代碼在實例化時試圖訪問您的數據,因此Entity Framework代碼在錯誤的位置查找您的連接字符串。 解決方案是在設計模式下不要這樣做。
天真的方法是檢查DesignerProperties.GetIsInDesignMode 。 這並不是真正的MVVM,因為您必須在視圖模型中進行檢查,並將UI代碼注入視圖模型。
有什么解決方案? 您可以hold着鼻子做它(快速又臟),創建一個可注射的接口,將其從ViewModel中提取出來,這是默認情況下檢查DependencyProperty的實現,或者您捕獲異常並優雅地吞下它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.