我正在开发一个3层应用程序,在数据访问层(DAL)上,我运行查询并像这样返回
public TRAIN getTrainingRecord(int id)
{
TRAIN ret = null;
try
{
integradboDataContext db = new integradboDataContext(_connectionstring);
var query = (from us in db.TRAINs
where us.id == id select us).FirstOrDefault();
ret = query;
}
catch (Exception ex) { misc.logerror(ex.Message, ex.StackTrace, ex.Source); }
return ret;
}
然后在业务层(BL)
上使用它public TrainingRecordFields getTrainingRecord(int id)
{
TrainingRecordFields ret = null;
try
{
var query_raw = data.getTrainingRecord(id);
var query = new TrainingRecordFields();
{
query.id = Convert.ToInt32(query_raw.id);
query.staffNo = query_raw.STAFFNO;
query.courseTitle = query_raw.TITLE;
query.dateStarted = query_raw.MDATE1.ToString();
query.dateEnded = query_raw.MDATE2.ToString();
query.organizers = query_raw.ORGANISE;
query.venue = query_raw.VENUE;
};
ret = query;
}
catch (Exception ex) { misc.logerror(ex.Message, ex.StackTrace, ex.Source); }
return ret;
}
班级名称TrainingRecordFields
只是一个POCO班级。
现在,我需要将另一个表连接到查询,以便我可以检索另外两个字段。查询应该如下所示
(from us in db.TRAINs
join st in db.STFREGs on us.STAFFNO equals st.STAFFNO
where us.id == id select us).FirstOrDefault();
在这种情况下,类TRAIN
不再是适当的返回类型,因为它没有我需要的另一个表STFREGs
中的两个字段。
这样做的标准C#方式是什么?
答案 0 :(得分:1)
只需将两个属性添加为POCO的扩展名即可。您可以在相同的C#类文件或类的扩展名中执行此操作。所以,例如:
// TrainingRecordFields file
public partial class TrainingRecordFields
{
...
}
// TrainingRecordFieldsExt file
public partial class TrainingRecordFields
{
...
}
我喜欢这种方法,因为它可以让你跟踪从连接中获得的扩展属性。