【问题标题】:Return type for Linq query Joining two tables from a Data Access LayerLinq 查询的返回类型从数据访问层连接两个表
【发布时间】:2015-04-23 04:01:56
【问题描述】:

我正在开发一个 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# 方法是什么?

【问题讨论】:

    标签: c# jquery linq data-access-layer


    【解决方案1】:

    只需将这两个属性添加为 POCO 的扩展。您可以在同一个 C# 类文件中或作为类的扩展来执行此操作。所以,例如:

    // TrainingRecordFields file
    public partial class TrainingRecordFields
    {
        ...
    }
    
    // TrainingRecordFieldsExt file
    public partial class TrainingRecordFields
    {
        ...
    }
    

    我喜欢这种方法,因为它可以让您跟踪从联接中获得的扩展属性。

    【讨论】:

    • 感谢您的回复。我需要返回类型的地方是使用 linq 查询的第一个方法,其中返回类型是当前 TRAIN。
    猜你喜欢
    • 2012-12-13
    • 2012-06-05
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多