2016-05-06 10 views
0

В трехуровневой архитектуре (C#, ADO.NET) есть наборы данных и datatables единственный вариант для возврата данных с уровня данных на уровень презентации ?. Я работал с DataTables, но когда я ttry сделать этоЯвляются ли Dataatets/Datatables единственным способом возврата данных?

public User getUserByP(User user) 
    { 
     User t = new User(); 
     using(SqlConnection con = new SqlConnection(Conexion.Cn)) 
     { 
      con.Open(); 
      SqlCommand command = new SqlCommand("spLogIn_User", con); 
      command.CommandType = CommandType.StoredProcedure; 
      command.Parameters.AddWithValue("@user", User.user); 
      command.Parameters.AddWithValue("@password", User.Pass); 
      SqlDataReader reader = command.ExecuteReader(); 
      while (reader.Read()) 
      { 
       t.IdUser = reader.GetInt32(0); 
       t.Name = reader.GetString(1); 
       t.LastName = reader.GetString(2); 
       t.Access = reader.GetString(3); 
       t.user = reader.GetString(4); 
       t.Pass = reader.GetString(5); 
      } 
     } 
     return t; 
    } 

Я плохо иметь причину ошибки не существует никакой связи между слоем данных и уровнем представления. Это возможно в MVC (я думаю), но здесь нет. Так что, если просто хотите вернуть хотя бы один результат, datatble или набор данных - это только опция?

+0

Нет, конечно, они не являются единственными вариантами. Есть много других, таких как Linq-To-Sql, Linq-To-Entities, Dapper.Net, вручную заполняя пользовательские классы и т. Д. Pp –

+0

Как ваш вопрос связан с 'DataSet' /' DataTable' вообще? Вы его не используете. Какова точная ошибка, и это сообщение, и где оно поднято? –

+0

Это был пример, если я хочу вернуть obejct от datalayer к моему уровню представления, это не будет, потому что я не могу иметь Entities в моем слое Presentation, если только не сделаю ссылку из dll dll в dll данных. –

ответ

1

Нет. Существуют другие альтернативы для извлечения данных из баз данных в ваш уровень данных.

  • Linq к SQL
  • Entity Framework
  • NHibernate
  • Dapper.Net

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

  1. В слое данных, всегда возвращают простой объект вместо специализированного типа (DataTable/набор данных), чтобы избежать ненужных зависимостей для System.Data или других библиотек в

  2. Добавить бизнес-слой. В трехуровневом приложении этот уровень использует данные с уровня данных и добавляет проверки, бизнес-правила и логику для доступа к этим данным и их обработки.

  3. Ссылка на бизнес-уровень в слое презентации, чтобы отобразить желаемую информацию.

Для получения более подробной информации о том, как достичь архитектуры 3-го уровня/слоя относится к this explanation

+0

Я думал, что (примерно в точке 2), но это не нарушает правило 3 уровня ?. Как я сказал в MVC, мы можем иметь ссылки на Entities в наших представлениях, но здесь это возможно? –

+1

Я обновил свой ответ. Повторите попытку. В принципе, нет проблем со ссылкой на бизнес-уровень внутри уровня представления, таким образом определяется 3 уровня/уровень архитектуры. Для получения дополнительной информации, пожалуйста, ознакомьтесь с этой ссылкой http://stackoverflow.com/a/13786596/2332687 – RaulMonteroC

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

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