gpt4 book ai didi

c# - 设计师问题 + Entity Framework (WPF MVVM)

转载 作者:行者123 更新时间:2023-12-03 10:28:21 24 4
gpt4 key购买 nike

背景,这是一个使用 Entity Framework 的 WPF 项目,运行时工作正常,只是设计器给出了以下错误。

未处理的异常
指定的命名连接在配置中未找到,不打算与 EntityClient 提供程序一起使用,或者无效。

我已经处理了到 UI 的连接字符串,但这仍然是一个问题

我有以下绑定(bind)

   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,因为您必须在 View 模型中检查它,并将 UI 代码注入(inject)到您的 View 模型中。

解决方案是什么?你可以捏着 Nose 去做(又快又脏),创建一个可注入(inject)接口(interface),从你的 ViewModel 中抽象出这个检查,默认情况下,这是一个检查 DependencyProperty 的实现,或者你捕获异常并优雅地吞下它.

关于c# - 设计师问题 + Entity Framework (WPF MVVM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23064774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com