嗨,我对 WPF 和 C# 还很陌生,所以如果这只是一个愚蠢的问题,请不要客气:
我正在使用 VS2012,Entity Framework 来创建预先存在的数据库的模型,我想将一些表绑定到一些 ListView ......现在,我知道有不同的方法可以做到这一点,但是当我尝试使用ObjectDataProvider 我在设计时收到错误“在应用程序配置文件中找不到名为 ... 的连接字符串”。
奇怪的是,如果我运行我的应用程序一切正常,我只想删除那个丑陋的错误消息,并希望在我的列表广告设计时获取数据(这就是我想使用 objectdataprovider 的原因)。
以下是我的代码的一些部分:
应用程序配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="BibliotecaEntities"
connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string='data source=(LocalDB)\v11.0;attachdbfilename="G:\PROGETTI-SOFTWARE\c# tests\Biblioteca\Biblioteca\biblioteca-db.mdf";initial catalog=BibliotecaDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework'"
providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
ListaScaffali.xaml:
<Window x:Class="Biblioteca.ShelvesList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Biblioteca;assembly="
Title="ShelvesList" Height="341" Width="609">
<Window.Resources>
<ObjectDataProvider ObjectType="{x:Type local:BooksDB_Handler}" MethodName="TuttiGliScaffali" x:Key="ScaffaliObjSrc" />
</Window.Resources>
<Grid>
<Grid>
<ListView Name="listaScaffali" ItemsSource="{Binding Source={StaticResource ScaffaliObjSrc}}">
<ListView.View>
<GridView>
<GridViewColumn Header="Scaffali Disponibili:" DisplayMemberBinding="{Binding Scaffale}" />
</GridView>
</ListView.View>
</ListView>
</Grid>
</Grid>
</Window>
BooksDB-Handler.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using System.Data.Entity;
using System.Collections.ObjectModel;
namespace Biblioteca
{
public static class BooksDB_Handler
{
...
public static ObservableCollection<Scaffali> TuttiGliScaffali()
{
using (var ctx = new BibliotecaEntities())
{
var reader = from d in ctx.Scaffali
select d;
return new ObservableCollection<Scaffali>(reader);
}
}
...
}
}
在我的数据库中,表“Scaffali”只有两列:“ScaffaliID”(身份)和“Scaffale”。
我在某处读到这可能是 Visual Studio 错误并尝试了各种方法:
- 重建几次
- 避免 # 在路径中
- 编译为 32 位(我正在运行 Win8 x64)
但是直到现在还没有运气...
感谢您的友好回答。
-= 2013 年 4 月 3 日更新 =-
到目前为止,我仍然没有找到导致这种奇怪行为的条件,无论如何我发现如果我只是按顺序构建(而不是重建)两次,错误消息就会消失,一切似乎都可以正常工作......