0

Есть база на SQLite, в ней таблица с двумя колонками Id и Name.введите сюда описание изображения С помощью Entity я подвязал её к коду и пытаюсь запихнуть в MVVM. Выдало ошибку введите сюда описание изображения

По аналогичным вопросам в интернете, люди писали что связано это с пробелами в sql запросах. Но у меня используется linq, и я не передаю команду строкой.

Код Model (описание таблицы Pacients):

 public class Pacient : INotifyPropertyChanged 
{

    private string _name;
    public int Id { get; set; }

    public string Name
    {
        get { return _name; }
        set
        {
            _name = value;
            OnPropertyChanged("Name");
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged([CallerMemberName]string prop = "")
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(prop));
    }

Код создания контекста подключения к бд:

 public  class PacientContext : DbContext
{
    public PacientContext() : base("DefaultConnection")
    {

    }
    public DbSet<Pacient> Pacients { get; set; }
}

Код ViewModel:

public class PacientViewModel : INotifyPropertyChanged
{

    private static PacientContext db = new PacientContext();
    private Pacient _selectedPacient;
    public ObservableCollection<Pacient> Pacients { get; set; }

    public Pacient SelectedPacient
    {
        get { return _selectedPacient; }
        set
        {
            _selectedPacient = value;
            OnPropertyChanged("SelectedPacient");
        }
    }

    public PacientViewModel()
    {
        var index = from t in db.Pacients
                    select t;
        Pacients = new ObservableCollection<Pacient>(index.ToList());




    }
    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged([CallerMemberName]string prop = "")
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(prop));
    }
}

Код XAML:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="107*" />
        <ColumnDefinition Width="289*" />
    </Grid.ColumnDefinitions>

    <ListBox Grid.Column="0" ItemsSource="{Binding Pacients}"
             SelectedItem="{Binding SelectedPacient}" Margin="0,0,8,0">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Margin="5">
                    <TextBlock FontSize="18" Text="{Binding Path=Name}" />
                    <TextBlock Text="{Binding Path=Id}" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>


</Grid>
2
  • Entity Framework переводит сам Ваши linq запросы в sql запросы.
    – WinnerIT
    6 мар '19 в 9:14
  • Как Вы используете Pacient? Как отношение с таблицей Users? Как вариант - у Вас неициализирован_selectedPacient. Попробуйте заменить private Pacient _selectedPacient; на private Pacient _selectedPacient = new Pacient();
    – WinnerIT
    6 мар '19 в 9:26
0

@WinnerIT, извиняюсь, ошибка была в человеческой невнимательности. Я переносил проект в другую директорию, а строка подключения к бд осталась привязана к старой. Тобишь я создал таблицу в копии бд к которой программа обращается

Ваш ответ

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.