Привет Я создаю простое тестовое решение в VS 2012 с двумя проектами.Нет данных о времени разработки с каркасом сущности 5 в Visual Studio
Одна библиотека классов, а другая - приложение WPF. Оба используют .NET 4.5.
В библиотеке классов я добавляю элемент EF (DataFirst), который отображает простую таблицу.
Далее Я ссылаюсь на этот проект в своем проекте WPF. Добавьте EF из Nuget и используйте очень простой MVVM-образный шаблон. Я добавляю класс, который выглядит так (обратите внимание - это не производственный код - это просто для воспроизведения проблемы).
public class Class1 {
public static Helper TheHelper { get; set; }
public Class1() {
TheHelper = new Helper();
}
} общественного класса Помощник { общественный помощник() { Нам = "AAA";
}
string connectionString = "metadata=res://*/Mod.csdl|res://*/Mod.ssdl|res://*/Mod.msl;provider=System.Data.SqlClient;provider connection string=\";data source=.\\sqlx8r2;initial catalog=FCdata;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework\"";
public string Nam { get; set; }
#region PCs
private List<PC> m_lPCs;
public List<PC> PCs {
get {
if(m_lPCs == null) {
try {
using(FCdataEntities dE = new FCdataEntities(connectionString)) {
m_lPCs = dE.PCs.ToList();
}
}
catch(Exception eX) {
m_lPCs = new List<PC>();
m_lPCs.Add(new PC() { Description = eX.Message });
}
}
return m_lPCs;
}
set {
if(m_lPCs != value) {
m_lPCs = value;
//RaisePropertyChanged(() => PCs);
}
}
}
#endregion
Я также расширил класс контекста, как это:
public partial class FCdataEntities : DbContext {
public FCdataEntities(string strCon) : base(strCon) {
}
}
Так что я могу передать строку соединения, которую я скопировать из app.config.
В моем главном окне я простой привязки, как это:
xmlns:local="clr-namespace:EFTest"
Title="MainWindow" Height="350" Width="1525">
<Window.Resources>
<local:Class1 x:Key="dG" />
</Window.Resources>
<Grid DataContext="{Binding Path=TheHelper, Source={StaticResource dG} }">
<Grid.RowDefinitions>
<RowDefinition Height="17*"/>
<RowDefinition Height="143*"/>
</Grid.RowDefinitions>
<TextBox Text="{Binding Nam}" />
<ListBox ItemsSource="{Binding PCs}" Grid.Row="1">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
Решение отлично работает во время выполнения. Но в VS Designer я получаю исключение, показанное в моем «фиктивном объекте», которое я создаю в блоке catch этого свойства.
Could not load file or assembly 'Windows, Version=255.255.255.255, Culture=neutral, ContentType=WindowsRuntime' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
Что мне нужно данные во время разработки - и нет «фиктивных данных» - вместо этого я хочу, чтобы получить его из БДА - избегать использования EF (и использовать linq2sql для примера) работает как шарм ,
Я допустил ошибку со строкой подключения (или так) - или это просто проблема в EF 5.0?
Являются ли эти ошибки исправлены в текущей версии - или у EF-кода все еще проблема в дизайнере? – ManniAT