创建指向外键字段的LINQ to SQL记录属性?

时间:2010-10-04 13:27:34

标签: c# .net linq linq-to-sql

在我的LINQ to SQL生成的db类中,我有一个表,其中包含对具有有用日期信息的字段的外键引用。查询可能如下所示:

var query = from a in db.TableA
            join b in TableB on a.FK_B_Id equals b.Id
            where b.Date.Value <= DateTime.Today
            select a;

...或更简化:

var query = from a in db.TableA
            where a.FK_B.Date.Value <= DateTime.Today
            select a;

表B中的“Date”字段可以为空,但数据库中有一个约束,指定TableA记录只能链接到Date不为null的TableB记录。因此,为了让任何编写LINQ查询的人都更清楚,如此查询会更有意义:

var query = from a in db.TableA
            where a.Date <= DateTime.Today
            select a;

是否可以在TableA部分类中创建一个“Date”属性,该属性将返回TableB外键引用的Date属性(并且能够在查询中使用它)?这更像是一个Entity Framework类型的事情,还是LINQ to SQL可以处理这类事情?提前谢谢。

2 个答案:

答案 0 :(得分:0)

我不知道Linq to SQL,但实体框架有一些名为Navigation Properties的东西,它允许您查询给定实体的关联实体。

答案 1 :(得分:0)

回答你的问题,是的,这是可能的。唯一需要注意的是,你的部分值必须是可以转换为sql的东西。如果您的部分值中的逻辑与sql没有等价的逻辑,则会遇到此问题。