2017-02-22 44 views
2

Newb здесь, поэтому, пожалуйста, идти легко ....WPF - Передача данных из DAL в UI

У меня есть проект WPF на ходу, я создал слой доступа к данным, и я получаю данные я требую со следующим кодом:

public static List<Model.CountryList> GetAllCountriesList() 
    { 

     SqlConnection connection = new DatabaseConnection().ConnectToBooze(); 
     SqlCommand cmd = new SqlCommand(); 
     SqlDataReader reader; 
     SqlDataAdapter da = new SqlDataAdapter(); 

     cmd.CommandText = "dbo.spGetAllCountries"; 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Connection = connection; 

     connection.Open(); 

     reader = cmd.ExecuteReader(); 

     var CompanyList = new List<Model.CountryList>(); 

     while (reader.Read()) 
     { 
      while (reader.Read()) 
      { 
       var Cli = new Model.CountryList(); 
       Cli.CountryID = Convert.ToInt32(reader["CountryID"]); 
       Cli.CountryName = reader["CountryName"].ToString(); 
       //Add the country to Country List 
       CompanyList.Add(Cli); 
      } 
     } 
     //Return list 
     return CompanyList; 
    } 

То, что я борюсь с это, как я прохожу это из DAL в мой уровень представления? То, что я думал, было создать класс «Data» на уровне представления, который вызывает метод выше из моего DAL и возвращает этот список, но я не уверен, как это сделать, не имея «неявного преобразования типа списка типов в список 'ошибка, что я пробовал:

Благодарим Вас за руководство.

+0

Независимо от кода вы предоставили, кажется, хорошо для меня. Можете ли вы быть более конкретным в том, какую ошибку вы видите. Может быть, сообщение об ошибке? – Versatile

+0

ОК, я был идиотом. Я использовал другую модель в своем слое презентации, следовательно, ошибку. Решено сейчас, полностью ссылаясь на модель в DAL. Спасибо за вашу помощь. – Leonidas199x

+0

Пила ваш комментарий сразу после отправки ответа, рад, что вы поняли это! – JSteward

ответ

0

MVVM - это просто способ разделения проблем и ИМХО - прославленная трехуровневая система данных.

Как передать это из DAL в слой презентации?

Place/читать данные в VM в MVVM и потреблять его из View, который будет уведомлены с его связанным управлением на представлении любой нагрузки через INotifyPropertyChange от VM (все в фоновом режиме) ,

Смотрите мой блог статья на MVVM, чтобы вы начали: Xaml: ViewModel Main Page Instantiation and Loading Strategy for Easier Binding

3

По моему читать ваши спрашивать больше об архитектуре, чем какая-либо ошибка. Имея это в виду, я бы сказал, что код, который вы предоставили, действительно является частью некоторого репозитория, этот репозиторий будет реализовывать интерфейс, который вы определили еще там, где он будет введен в любую модель просмотра, которая нуждается в этой возможности.

Диаграмма упрощенного слоя может быть:

UI -> ViewModel -> Model <- DAL 

namespace MyApp.Model 
{ 
    public interface IMyRepo 
    { 
     IEnumerable<Model.CountryList> GetAllCountries(); 
    } 
} 

namespace MyApp.DAL 
{ 
    public class MyRepo : IMyRepo 
    { 
     IEnumerable<Model.CountryList> GetAllCountries() 
     { 
      /** 
      data access 
      **/ 
     } 
    } 
} 

namespace MyApp.ViewModel 
{ 
    public class MainViewModel : ViewModelBase 
    { 
     public MainViewModel(IMyRepo repo) 
     { 
       this.Repo = repo; 
     } 
    } 
} 
+0

Это замечательно, спасибо – Leonidas199x

 Смежные вопросы

  • Нет связанных вопросов^_^