Entity Framework - привязать комбинированный список к полю нормализованной таблицы - PullRequest
1 голос
/ 01 апреля 2009

В настоящее время я пытаюсь связать объект с формой, однако я хочу, чтобы DataConfidenceLevel (см. Ниже) был привязан к комбинированному списку с ConfidenceDescription в качестве элемента отображения. Как правильно заполнить поле со списком?

(в настоящее время я использую WPF, но ответ Winforms приемлем)

Спасибо

Entity Designer http://img19.imageshack.us/img19/374/entity.png

Ответы [ 3 ]

2 голосов
/ 01 апреля 2009

Вы хотите связать коллекцию с элементом управления и иметь освобожденную сущность, а именно свойство навигации DataConfidenceLevel типа DataConfidenceLevel, в качестве элемента отображения?

Это обычно достигается действительно просто путем переопределения ToString (),

public partial class DataConfidenceLevel
{
   public override String ToString()
   {
      return this.ConfidenceDescription;
   }
}

и затем установка DisplayMember в свойство DataConfidenceLevel объекта, который вы хотите связать.

2 голосов
/ 02 апреля 2009

Ответ оказался проще, чем я ожидал.

    comboBox.DataBindings.Add(new Binding("SelectedItem", this.dataBindingSource, "DataConfidenceLevel", true));
    comboBox.DataSource = db.DataConfidenceLevel;
    comboBox.DisplayMember = "ConfidenceDescription";
    comboBox.ValueMember = "ConfidenceLevelID";
1 голос
/ 01 апреля 2009

Я написал две записи в блоге об одном подходе к решению этой ситуации - он применим к ASP.net, но может помочь вам.

Вот посты, первая из которых является скорее введением в проблему, вторая запись 1006 * показывает, как все это связать.

Я не уверен, что это квалифицируется как "правильный путь", но это, безусловно, подход :) Я был бы рад получить ответ, если это поможет вам!

Редактировать: Прочитав ответ Данбрука, вы можете переопределить ToString в свойстве Navigation, как он предлагал (только для чтения), но это только частичный ответ.

Это не будет работать, если ваш запрос LINQ не содержит оператор «Включить», например,

var listOfThings = (from t in db.Thingy
                    .Include("DataConfidenceLevel")
                    select t).ToList();

Пропуск .Include () означает, что ничто не будет привязано к столбцу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...