【发布时间】:2010-10-04 16:20:36
【问题描述】:
今天早上我一直在为 LinqToSQL 的一个问题感到困惑。我将尝试用下面的简短示例进行总结,以解释我的观点。
我有两个数据库表:
table Parent
{
ParentId
}
table Child
{
ChildId
ParentId [FK]
Name
Age
}
这些在我的项目中有 LinqToSQL 等效类,但是,我编写了两个我希望我的 UI 使用的自定义模型类,而不是使用 LinqToSQL 类。
我从前端的数据访问通过一个服务类,该服务类又调用一个存储库类,该存储库类通过 linq 查询数据。
在存储库级别,我通过以下方式返回 IQueryable:
return from data in _data.Children
select new CustomModel.Child
{
ChildId = data.ChildId,
ParentId = date.ParentId
};
然后,我的服务层会在返回该父级的子级列表之前添加父级的附加查询限制。
return _repository.GetAllChildren().Where(c => c.Parent.ParentId == parentId).ToList();
所以此时,当我运行所有内容时,由于无法转换自定义模型的 c.Parent 属性,我得到该方法没有支持的 sql 转换错误。 [c.Parent 属性是对链接的父模型类的对象引用。]
这一切都说得通,所以我的问题是:
能否提供查询过程 有一些规则可以转换 谓词表达式成正确的 在数据库中运行的一段 SQL 因此不会触发错误?
到目前为止,我还没有对 linq 做过很多工作,如果我没有充分解释这一点,请原谅我缺乏经验。
另外,对于那些评论我选择的架构的人,我已经对其进行了更改以解决这个问题,我在这个阶段只是在玩弄一些想法。我想知道是否有答案以供将来参考。
如果有人能提供帮助,非常感谢。
【问题讨论】:
标签: c# linq-to-sql .net-3.5