c# – UserControl中的EF无法看到app.config?

我刚刚创建了一个用户控件.
此控件还使用我的静态实体框架类来加载两个组合框.
一切都很好,运行没有问题.设计和运行时正在运行.
然后,当我停止应用程序时,包含我的UserControl的所有表单在设计时不再有效.我只看到两个错误

ERROR1:
指定的命名连接在配置中找不到,不打算与EntityClient提供程序一起使用,或者无效.

错误2:
变量ccArtikelVelden要么是未声明的,要么是从未分配过的.
(ccArtikelVelde是我的UserControl)

运行时一切都还在运行

我的静态EF Repositoy类:

public class BSManagerData
{
    private static BSManagerEntities _entities;
    public static BSManagerEntities Entities
    {
        get
        {
            if (_entities == null)
                _entities = new BSManagerEntities();
            return _entities;
        }
        set
        {
            _entities = value;
        }
    }
}

我的UserControl中发生了一些逻辑,用于加载组合框中的数据:

private void LaadCbx()
{
    cbxCategorie.DataSource = (from c in BSManagerData.Entities.Categories
                               select c).ToList();
    cbxCategorie.displayMember = "Naam";
    cbxCategorie.ValueMember = "Id";
}

private void cbxCategorie_SelectedindexChanged(object sender,EventArgs e)
{
    cbxFabrikant.DataSource = from f in BSManagerData.Entities.Fabrikants
                              where f.Categorie.Id == ((Categorie)cbxCategorie.SelectedItem).Id
                              select f;
    cbxFabrikant.displayMember = "Naam";
    cbxFabrikant.ValueMember = "Id";
}

使表单再次工作的唯一方法是设计时间,即在UserControl中注释掉EF部分(见上文)并重建.
这很奇怪,一切都在同一个程序集中,相同的命名空间(为了简单起见).

有人有想法吗?

解决方法

看起来你在设计模式下以某种方式执行数据库代码.为了防止这种情况,请搜索导致此问题的控件和方法,并使用:
if (DesignMode)
    return

此外,静态缓存数据库上下文是一个非常糟糕的主意.它会导致多线程问题,以及进行插入和删除时的问题.数据库上下文用于单个“工作单元”,添加2,删除3个其他对象并调用SaveChanges一次.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...