Задать вопрос
@youngpr

Почему не запускается приложение wpf?

Решил сделать справочник по примеру из метанита на wpf. Ошибок нет но приложение не запускается, проходил отладчиком он выдает ошибку:

System.Windows.Markup.XamlParseException: ""Вызов конструктора для типа "Phonebook.MainWindow", удовлетворяющего указанным ограничениям привязки, привел к выдаче исключения.": номер строки "6" и позиция в строке "9"."
SQLiteException: SQL logic error
no such table: Phones


using System.Data.Entity;

namespace Phonebook
{
    public class ApplicationContext : DbContext
    {
        public ApplicationContext():base("DefaultConnection")
        {
        }
        public DbSet<Phone> PhoneBook { get; set; }
    }
}


using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Windows;

namespace Phonebook
{
    public partial class MainWindow : Window
    {
        ApplicationContext db;
        public MainWindow()
        {
            InitializeComponent();

            db = new ApplicationContext();
            db.PhoneBook.Load();
            this.DataContext = db.PhoneBook.Local.ToBindingList();
        }
        // добавление
        private void Add_Click(object sender, RoutedEventArgs e)
        {
            PhoneWindow phoneWindow = new PhoneWindow(new Phone());
            if (phoneWindow.ShowDialog() == true)
            {
                Phone phone = phoneWindow.Phone;
                db.PhoneBook.Add(phone);
                db.SaveChanges();
            }
        }
        // редактирование
        private void Edit_Click(object sender, RoutedEventArgs e)
        {
            // если ни одного объекта не выделено, выходим
            if (phonesList.SelectedItem == null) return;
            // получаем выделенный объект
            Phone phone = phonesList.SelectedItem as Phone;

            PhoneWindow phoneWindow = new PhoneWindow(new Phone
            {
                Id = phone.Id,
                Position = phone.Position,
                PhoneNumber = phone.PhoneNumber,
                Name = phone.Name,
                Email = phone.Email,
                Organisation = phone.Organisation

            });

            if (phoneWindow.ShowDialog() == true)
            {
                // получаем измененный объект
                phone = db.PhoneBook.Find(phoneWindow.Phone.Id);
                if (phone != null)
                {
                    phone.Position = phoneWindow.Phone.Position;
                    phone.Name = phoneWindow.Phone.Name;
                    phone.PhoneNumber = phoneWindow.Phone.PhoneNumber;
                    phone.Email = phoneWindow.Phone.Email;
                    phone.Organisation = phoneWindow.Phone.Organisation;

                    db.Entry(phone).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
        }
        // удаление
        private void Delete_Click(object sender, RoutedEventArgs e)
        {
            // если ни одного объекта не выделено, выходим
            if (phonesList.SelectedItem == null) return;
            // получаем выделенный объект
            Phone phone = phonesList.SelectedItem as Phone;
            db.PhoneBook.Remove(phone);
            db.SaveChanges();
        }
    }
}
  • Вопрос задан
  • 423 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
У вас в базе SQLite нет таблицы `Phones`. Английским по белому же сами написали
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yarosroman
@yarosroman Куратор тега C#
C# the best
Изучайте миграции EF.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы