Gaa*_*aax 1 c# wpf xaml mvvm entity-framework-6
我已经看到了与此错误有关的几个不同的问题,但似乎没有一个我正在经历的.我刚刚在CodeProject.com上关注了一个简单的项目教程,以便更好地理解使用MVVM模式和实体框架(http://www.codeproject.com/Articles/873592/Tutorial-for-a-Basic-WPF -MVVM-Project-Using-Entity).我直接跟着它,一切似乎都很完美.
但是我有点好奇并开始改变一些事情.我想更多地了解命名空间如何在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>
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我在Visual Studio中得到一个浅蓝色下划线警告,上面写着"在应用程序配置文件中找不到名为[myEntities]的连接字符串".但是App.config文件中存在连接字符串,当我构建并运行程序时,它按预期工作.
关于为什么会发生这种情况的任何想法?
小智 7
您在视图中声明了视图模型的实例.这导致VS在编辑器中实例化您的类,而编辑器又在VS进程中运行构造函数代码.
您的构造函数正在尝试连接到数据库.它正在app.config文件中查找当前正在运行的进程的连接字符串.当前运行的进程是Visual Studio.我不相信有一个devenv.exe.config文件,如果有,它肯定没有你的连接字符串(并且,请不要创建一个并将你的连接器放在那里!).
您的代码出错,编辑器旨在捕获UI组件中的错误并在UI中显示警告.它正在为您的代码执行此操作.
解决方案是不在构造函数中执行工作.你真的不应该在那里做长期运行的操作.您应该移动数据库逻辑的位置只能由您和您的应用程序设计决定.
另一种方法是接受这种情况并更好地处理您的错误.也许记录缺少的连接字符串.或者抓住异常并继续前进.那里不是最好的设计决定.
另一种解决方案是不以这种方式设置DataContext.在代码隐藏中创建它并在那里分配它.这样,您可以执行检查以确定您是否在设计人员中并完全跳过该过程.
最后选择:没有伤害,没有犯规.忘记设计师的错误.它至少不会损害您的应用程序.继续进行更重要的任务.
| 归档时间: |
|
| 查看次数: |
1834 次 |
| 最近记录: |