簡體   English   中英

設計器問題+實體框架(WPF MVVM)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM