我正在创建一个日历应用程序。我有一个约会表和一个人表。这 2 个由每个表中的 PersonID 字段链接。
我的问题是,如果我的底层 .Net Appointment 对象包含 PersonName 的属性,并且我从数据库视图(或连接表的存储过程)填充对象,还是让 Appointment 类包含 People 类更正确? 如果答案是后者,那么从数据库中填充 Appointment/Person 对象的最佳方法是什么?
我正在创建一个日历应用程序。我有一个约会表和一个人表。这 2 个由每个表中的 PersonID 字段链接。
我的问题是,如果我的底层 .Net Appointment 对象包含 PersonName 的属性,并且我从数据库视图(或连接表的存储过程)填充对象,还是让 Appointment 类包含 People 类更正确? 如果答案是后者,那么从数据库中填充 Appointment/Person 对象的最佳方法是什么?
我不确定是否要读取数据库。但是这些类可能看起来像:
public class Person
{
public List<Appointment> Appointments { get; private set; }
...
public Person()
{
Appointments = new List<Appointment>();
}
}
public class Appointment
{
public Person Person { get; set; } // Only if you need this relation from
...
}
在你的模型中:
Persons = new List<Person>();
您不应该重复属性。一旦实体/类应该只具有对该实体有效的属性。
如果你想调用另一个表,那么你应该有一个属性,它可以通过特定的外键返回另一个实体。
在你的情况下,我会
public class Person
{
List<Appointment> _appointments;
public List<Appointment> Appointments
{
get
{
if (_appointments == null) _appointments = //LOAD APPOINTMENTS FOR THAT PERSON
return _appointments;
}
}
}
希望有帮助。
假设你没有使用 ORM,你可以看看 DAO 模式: http ://en.wikipedia.org/wiki/Data_access_object
我将创建两个 DTO:
class Person
{
public int id { get; set; }
public String name { get; set; }
}
class Appointment
{
public int id { get; set; }
public Date when { get; set; }
public Person who { get; set; }
}
还有一个“完整”的预约课程:
class FullAppointment
{
private Person person;
private List<Appointment> appointment;
}
然后一个 DTO 从数据库中获取数据:
class AppointmentDTO
{
public FullAppointment retrieveFromDb(int personId)
{//...}
}