Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 没有名为'的连接字符串;x';在应用程序配置文件中找到。。。但它有效吗?_C#_Wpf_Xaml_Mvvm_Entity Framework 6 - Fatal编程技术网

C# 没有名为'的连接字符串;x';在应用程序配置文件中找到。。。但它有效吗?

C# 没有名为'的连接字符串;x';在应用程序配置文件中找到。。。但它有效吗?,c#,wpf,xaml,mvvm,entity-framework-6,C#,Wpf,Xaml,Mvvm,Entity Framework 6,我已经看到了与这个错误相关的几个不同的问题,但似乎没有一个与我所经历的完全相同。我只是在CodeProject.com上学习了一个简单的项目教程,以便更好地理解MVVM模式和实体框架的使用()。我直接跟着它走,一切似乎都很顺利 然而我有点好奇,开始改变一些事情。我想知道更多关于名称空间在XAML中如何工作的信息,所以我将MainWindowViewModel移到了一个新文件夹中,我将其命名为ViewModels。然后,我在XAML中添加了一个名为“vms”的新名称空间,并在适当的位置设置了窗口的

我已经看到了与这个错误相关的几个不同的问题,但似乎没有一个与我所经历的完全相同。我只是在CodeProject.com上学习了一个简单的项目教程,以便更好地理解MVVM模式和实体框架的使用()。我直接跟着它走,一切似乎都很顺利

然而我有点好奇,开始改变一些事情。我想知道更多关于名称空间在XAML中如何工作的信息,所以我将MainWindowViewModel移到了一个新文件夹中,我将其命名为ViewModels。然后,我在XAML中添加了一个名为“vms”的新名称空间,并在适当的位置设置了窗口的数据上下文:

<Window x:Class="CpMvvMWithEntity.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:vms="clr-namespace:CpMvvMWithEntity.ViewModels"
    xmlns:local="clr-namespace:CpMvvMWithEntity"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">

<Window.DataContext>
   <vms:MainWindowViewModel />
</Window.DataContext>

但当我这样做时,我在Visual Studio中得到一条浅蓝色下划线警告,内容是“在应用程序配置文件中找不到名为[myEntities]的连接字符串”。但是App.config文件中存在一个连接字符串,当我构建并运行程序时,它会按预期工作


关于为什么会发生这种情况,您有什么想法吗?

对于编辑器来说,构建应用程序和在编辑器模式下工作是两种不同的活动。编辑器必须在代码能够成功编译的状态和失败状态下解析/构建代码;每次都必须给出最终结果;就像您已经编译并构建了应用程序一样

已将我的MainWindowViewModel移动到新文件夹中

由于您移动了位置,完整构建编译将链接到创建应用程序所需的部分,正如您所看到的那样。但是对于编辑器来说,当它解析顶级的
MainWindowViewModel
时,它可能有一个app.config的缓存版本位置,该位置位于父级而不是新级别


不管它的编辑器如何,启发式处理都会导致找不到移动文件当前位置的文件

构建应用程序和在编辑器模式下工作是编辑器的两个不同活动。编辑器必须在代码能够成功编译的状态和失败状态下解析/构建代码;每次都必须给出最终结果;就像您已经编译并构建了应用程序一样

已将我的MainWindowViewModel移动到新文件夹中

由于您移动了位置,完整构建编译将链接到创建应用程序所需的部分,正如您所看到的那样。但是对于编辑器来说,当它解析顶级的
MainWindowViewModel
时,它可能有一个app.config的缓存版本位置,该位置位于父级而不是新级别


不管它的编辑器如何,启发式处理都会导致找不到移动文件当前位置的文件

您正在视图中声明视图模型的实例。这将导致VS在编辑器中实例化您的类,从而在VS进程中运行您的构造函数代码

您的构造函数正在尝试连接到数据库。它正在app.config文件中查找当前正在运行的进程的连接字符串。当前正在运行的进程是Visual Studio。我不相信有
devenv.exe.config
文件,如果有,它肯定没有你的连接字符串(请不要创建一个并将你的connex放在那里!)

您的代码出错了,编辑器设计用于捕获UI组件中的错误并在UI中显示警告。这是为了你的代码

解决方案是不在构造函数中执行工作。你真的不应该在那里做长期的行动。数据库逻辑应该移动到哪里只能由您和您的应用程序设计决定

另一种选择是接受这种情况并更好地处理错误。可能会记录丢失的连接字符串。或者抓住异常,继续前进。这不是最好的设计决策

另一个解决方案是不要这样设置DataContext。在codebehind中创建并分配它。这样,您就可以执行检查并完全跳过该过程


最后一个选择:没有伤害,没有犯规。忘记设计器中的错误。它丝毫不会损害您的应用程序。继续执行更重要的任务。

您正在视图中声明视图模型的实例。这将导致VS在编辑器中实例化您的类,从而在VS进程中运行您的构造函数代码

您的构造函数正在尝试连接到数据库。它正在app.config文件中查找当前正在运行的进程的连接字符串。当前正在运行的进程是Visual Studio。我不相信有
devenv.exe.config
文件,如果有,它肯定没有你的连接字符串(请不要创建一个并将你的connex放在那里!)

您的代码出错了,编辑器设计用于捕获UI组件中的错误并在UI中显示警告。这是为了你的代码

解决方案是不在构造函数中执行工作。你真的不应该在那里做长期的行动。数据库逻辑应该移动到哪里只能由您和您的应用程序设计决定

另一种选择是接受这种情况并更好地处理错误。可能会记录丢失的连接字符串。或者抓住异常,继续前进。这不是最好的设计决策

另一个解决方案是不要这样设置DataContext。在codebehind中创建并分配它。这样,您就可以执行检查并完全跳过该过程


最后一个选择:没有伤害,没有犯规。忘记设计器中的错误。它丝毫不会损害您的应用程序。转到更重要的任务。

微软在其网站上声称这是一个实体框架问题。然而,我(和其他人)发现了一些奇怪的事情
DataContext = new MainWindowViewModel();