产生回报,我试图找出处理一个简单的问题的最好办法: 我有一个简单的LINQ加盟两个表。我知道如何返回一个表的类型,因为它与生成的dbml类相同。但是,如果我想从两个表中返回数据呢?是不是有办法返回并使用它们的关系?我真的必须创建另一个返回类型来从两个表中返回数据吗?仅供参考 - 我不想用其他表格对象返回输出参数;我也没有真正有兴趣返回一个匿名类型。什么是最佳实践建议?LINQ到SQL:多表连接的类型不被DBML
public IQueryable<Consumer_Question> GetQuestions(int subCategoryId)
{
//create DataContext
MototoolsDataContext mototoolsDataContext = new MototoolsDataContext();
mototoolsDataContext.Log = Console.Out;
var subcategoriestag = (from subCatTag in mototoolsDataContext.Consumer_SubCategoriesTags
join tagQuestion in mototoolsDataContext.Consumer_TagQuestions on subCatTag.TagID equals tagQuestion.TagID
join question in mototoolsDataContext.Consumer_Questions on tagQuestion.QuestionsID equals question.ID
where subCatTag.SubCategoriesID == subCategoryId
orderby subCatTag.ID descending
select question);
//select new { question, tagQuestion });
return subcategoriestag;
}
感谢您的帮助,
这引出另一个问题,如果我有一个分配给我的数据库中的表已经关系(主键,外键),我注意到了DBML生成的类为我预留一段创建一个关联属性的关系,而不是全部。那么你是否在说,如果这种关系关系是正确的,那么我可以返回父母类型并且走孩子?这就是我想要的!我将不得不调查我似乎有的dbml关联错误。 – mytwocents 2009-09-16 22:00:11
所以事实证明,使用dbml生成关系属性的关系问题不是因为我忘记了关系的外键部分,而是因为我缺少父表上的主键标识。现在我可以遍历问题对象的子对象,而不必担心自定义返回类型包含所需的所有数据。凉。 – mytwocents 2009-09-17 20:05:47
@mytwocents:很高兴听到这个消息,一旦这一切都建立正确LINQ到SQL是相当不错的,它仍然有一些领域是有点痛苦的,但它终于得到了VS2010一些改进。 – 2009-09-17 20:36:48