为什么我不能使用我的DbContext类型?

时间:2015-07-20 15:28:09

标签: wpf entity-framework

我想在WPF窗口中访问我的DbContext类型的一些静态属性。我以为我可以使用我用来引用单个实体的相同XAML:

    <Window.Resources>
        <entity:Account x:Key="account"/> //Works fine
        <entity:MyEntities x:Key="myEntities"/> //Throws an error!
    </Window.Resources>

我收到此错误:

  

在应用程序配置文件中找不到名为“MyEntities”的连接字符串。

为什么以不同于Account实体的方式处理DbContext类型(MyEntities)?有没有一种简单的方法可以访问我的MyEntities类型的静态属性?

2 个答案:

答案 0 :(得分:0)

您使用的语法是创建实例,而不是静态属性。如果要访问静态属性,则需要使用x:Static标记扩展名

<Window.Resources>
    <entity:Account x:Key="account" SomeProperty={x:Static entity:MyEntities.MyProperty}/>
</Window.Resources>

上面的xaml类似于C#代码

var account = new Account()
{
     SomeProperty = MyEntities.MyProperty
};
this.Resources["account"] = account;

如果您致电new Account()(如原始示例所示),请注意您正在呼叫new MyEntites(),您会收到错误。

答案 1 :(得分:0)

由于我放在DbContext中的静态构造函数,似乎会产生特定的错误。当我删除静态构造函数时,错误更改为:

  

对象引用未设置为对象的实例。

事实证明,原始错误并不妨碍我编译或运行我的应用程序。我更改了我的代码以使用Scott Chamberlain的建议(产生类似的可忽略错误),因为它更清晰,我可以访问DbContext上的静态属性,尽管Visual Studio的投诉。谢谢大家的帮助和建议。

相关问题