Вывести данные внешнего ключа в комбинированный список данных Sqlite - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть таблица Person и таблица PersonRole с ForeignKey на Person.Role ==> PersonRole.ID .

Мой Combobox привязан к данным с использованием свойств DataSource, Display- & ValueMember, поэтому он автоматически обновляется, когда я выбираю другую роль в другом элементе управления.Однако в поле со списком отображается поле Person.Role (= ForeignKey integer), но мне нужно, чтобы оно показывало PersonRole.Name .Но нет встроенной опции, которую я могу найти, чтобы связать ее с внешним ключом?Конечно, я могу связать его с PersonRole , но тогда он не будет автоматически обновляться при изменении активной строки в Person .

На фотографиях: ЧтоУ меня есть и Что я хочу

Я пытался использовать QueryBuilder Результат построителя запросов , но, очевидно, это не работает (Ошибка: «Схемавозвращаемый запросом отличается от базового запроса ".) , поскольку мне не разрешено, чтобы мои столбцы отличались от данных (я думаю).

Затем я попытался сделать это с помощью кода в FormLoad:

        using (SQLiteConnection cnn = new SQLiteConnection(ConfigurationManager.ConnectionStrings["Default"].ConnectionString))
        {
            try
            {
                string query = "SELECT PersonRole.ID, PersonRole.Name FROM Person INNER JOIN PersonRole ON Person.ID = PersonRole.ID";
                SQLiteDataAdapter da = new SQLiteDataAdapter(query, cnn);
                cnn.Open();
                DataSet ds = new DataSet();
                da.Fill(ds, "Role");
                cboRole.ValueMember = "ID";
                cboRole.DisplayMember = "Name";
                cboRole.DataSource = ds.Tables["Role"];
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

Но это тоже не работает.Может быть, 2 набора данных должны быть связаны или .. я не знаю больше ... Это должно быть что-то простое, я уверен.Я думаю, что это должно быть возможно без кода в любом случае.

...