Я использовал эту сторону для создания своего демонстрационного приложения
http://windowsclient.net/learn/video.aspx?v=314683
Сайт был очень полезен для начала работы, и в своем примере они создали файл EmployeeRepository.cs, который, по-видимому, является источником данных. В их примере данные были запрограммированы в коде. Поэтому я пытаюсь узнать, как получить данные из источника данных (например, БД). В моем конкретном случае я хочу получить данные из БД Microsoft Access. (ЧИТАЙТЕ ТОЛЬКО, поэтому я буду использовать только команды SELECT).
using System.Collections.Generic;
using Telephone_Directory_2010.Model;
namespace Telephone_Directory_2010.DataAccess
{
public class EmployeeRepository
{
readonly List<Employee> _employees;
public EmployeeRepository()
{
if (_employees == null)
{
_employees = new List<Employee>();
}
_employees.Add(Employee.CreateEmployee("Student One", "IT201", "Information Technology", "IT4207", "Building1", "Room650"));
_employees.Add(Employee.CreateEmployee("Student Two", "IT201", "Information Technology", "IT4207", "Building1", "Room650"));
_employees.Add(Employee.CreateEmployee("Student Three", "IT201", "Information Technology", "IT4207", "Building1", "Room650"));
}
public List<Employee> GetEmployees()
{
return new List<Employee>(_employees);
}
}
}
Я нашел другой пример, где используется БД Access, но она не соответствует MVVM. Поэтому я пытался выяснить, как добавить файл БД в проект, как подключить его и привязать к списку (я не так далеко). Ниже мой модифицированный файл
using System.Collections.Generic;
using Telephone_Directory_2010.Model;
// integrating new code with working code
using Telephone_Directory_2010.telephone2010DataSetTableAdapters;
using System.Windows.Data;
namespace Telephone_Directory_2010.DataAccess
{
public class EmployeeRepository
{
readonly List<Employee> _employees;
// start
// integrating new code with working code
private telephone2010DataSet.telephone2010DataTable employeeTable;
private CollectionView dataView;
internal CollectionView DataView
{
get
{
if (dataView == null)
{
dataView = (CollectionView) CollectionViewSource.GetDefaultView(this.DataContext);
}
return dataView;
}
}
public EmployeeRepository()
{
if (_employees == null)
{
_employees = new List<Employee>();
}
telephone2010TableAdapter employeeTableAdapter = new telephone2010TableAdapter();
employeeTable = employeeTableAdapter.GetData();
this.DataContext = employeeTable;
}
public List<Employee> GetEmployees()
{
return new List<Employee>(_employees);
}
}
}
Я получаю следующие сообщения об ошибках при сборке
Ошибка 1: «Telephone_Directory_2010.DataAccess.EmployeeRepository» не содержит определения для «DataContext», и отсутствует метод расширения «DataContext», принимающий первый аргумент типа «Telephone_Directory_2010.DataAccess.EmployeeRepository» (вы пропускаете директива или ссылка на сборку?) C: \ Projects \ VS2010 \ Телефонный справочник 2010 \ Телефонный справочник 2010 \ DataAccess \ EmployeeRepository.cs 23 90 Телефонный справочник 2010