У меня есть два класса в приложении для окон. Скажем, Student
и StudentDetails
, где по классу StudentDetails
также является собственностью Student
класс.populating A Класс, который имеет другой класс как свойство
У меня есть хранимая процедура, которая получает данные из обеих таблиц в базе данных. Мне нужно знать, как этот сценарий обычно обрабатывается, что означает, что обычно используется Студенческий класс. Большое спасибо за ответы. Любая ссылка на аналогичный сценарий wold будет большой.
вот мой код:
class Student
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public StudentDetails StudentDetails { get; set; }
public Student()
{
this.StudentID = 0;
this.StudentName = String.Empty;
this.StudentDetails = new StudentDetails();
}
}
class StudentDetails
{
public int StudentDetailsID { get; set; }
public string Address { get; set; }
public int Height { get; set; }
public int Weight { get; set; }
public StudentDetails()
{
this.StudentDetailsID = 0;
this.Address = String.Empty;
this.Height = 0;
this.Weight = 0;
}
}
В приведенной ниже класс имеет функцию, которая заполняет Student Class (FillStudent())
Class StudentAssembler
{
public List<Model.Student> FillStudent()
{
List<Model.Student> StudentCollection = new List<Model.Student>();
Model.Student StudentDTO = new Model.Student();
try
{
using (Model.dbConnection dbconnection = new Model.dbConnection(Utilities.SqlConnStr))
{
SqlDataReader dr;
SqlCommand command = new SqlCommand("GetStudents", dbconnection.connection);
command.CommandType = CommandType.StoredProcedure;
dbconnection.OpenConn();
dr = command.ExecuteReader();
while (dr.Read())
{
StudentDTO.StudentID = dr[0] == DBNull.Value ? 0 : (int)dr[0];
StudentDTO.StudentName = dr[1] == DBNull.Value ? String.Empty : (String)dr[1];
//this is the part that i need to know how is it usually handled
//StudentDTO.StudentDetails = how to fill out this part ???
StudentCollection.Add(StudentDTO);
}
return StudentCollection;
}
}
catch (Exception)
{
return null;
}
}
}
EDIT:
Stored Код процедуры
select s.StudentID,s.StudentName,sd.StudentDetailsID,sd.Address,
sd.Height,sd.Weight
from Student s,StudentDetails sd
where s.StudentID = sd.StudentID
Это зависит от того, что возвращает процедура «GetStudents». Если детали находятся там, вы можете просто создать новый экземпляр StudentDetails и установить свойства. Это не очень хороший способ справиться с такими вещами? Почему бы не использовать Entity Framework? – Andrew
@ Псевдоним: «код сломался, пожалуйста, помогите» явно не относится к теме обзора кода. Потратьте минутку, чтобы посмотреть, какие вопросы можно задать там: http://codereview.stackexchange.com/help/dont-ask –
@Pseudonym спасибо за комментарий, На самом деле я не работаю с опубликованным кодом, я только положил его в качестве примера мне просто нужна помощь в поиске того, как справиться с похожим сценарием, что является лучшей практикой или лучшим шаблоном дизайна :) –