Entity framework 与Lambda表达式斗争(VB.net)
我有一件相对简单的事情,我可以在SQL中轻松地完成,但我正试图习惯使用Lambda表达式,这很困难 下面是一个简单的例子。基本上我有两张桌子Entity framework 与Lambda表达式斗争(VB.net),entity-framework,lambda,left-join,code-first,linq-expressions,Entity Framework,Lambda,Left Join,Code First,Linq Expressions,我有一件相对简单的事情,我可以在SQL中轻松地完成,但我正试图习惯使用Lambda表达式,这很困难 下面是一个简单的例子。基本上我有两张桌子 tblAction(ActionID、ActionName) tblAudit(试镜、ActionID、删除) tblAudit可能有一个关于tblAction的条目,删除标志设置为1 我所要做的就是选择我们没有删除条目的操作。因此,SQL语句是: Select tblAction.* From tblAction LEFT JOIN tblAudi
- tblAction(ActionID、ActionName)
- tblAudit(试镜、ActionID、删除)
Select tblAction.*
From tblAction LEFT JOIN tblAudit on tblAction.ActionID=tblAudit.ActionID
where tblAudit.Deleted <> 1
但这实际上是一个内部连接类型的场景,其中要求TBL中的每个条目在TBL中也有一个条目。我首先使用实体框架代码来进行数据库映射。有没有一种方法可以定义映射,让您可以这样做?您应该添加
公共财产审计作为数据库集
进入动作实体类(以注册这些表之间的关联)
现在你可以写下你的意思:
(来自上下文中的act.Actions而非act.Audits.Any(功能(审核)审核.Deleted)).ToArray
这相当于
Context.Actions.Where(函数(act)Not act.Audits.Any(函数(audit)audit.Deleted)).ToArray
让LINQ解析器来完成繁重的SQL工作。我不清楚lambda表达式与此有什么关系。也许你是说Razi,检查一下,然后。团体加入将进行外部加入。还有一个导航属性(Action.Audits)。
Context.Actions.Where(Function(act) Context.Audit
.Where(Function(aud) aud.Deleted=False AndAlso aud.ActionID=act.ActionID)).ToList