【问题标题】:LINQ statement getting value from one table depending on the other tableLINQ 语句根据另一个表从一个表中获取值
【发布时间】:2012-09-12 13:10:30
【问题描述】:

我正在尝试使用 mvc3 和 c# 创建一个小型网站,但我对这个 LINQ 查询有点卡住了。

我有两张桌子:

  1. 代理(id、firstName、lastName、登录名、密码)

  2. 子代理(subAgentsId,agentId)

这里是Agents.id == SubAgents.agentsId

var query = from subAgent in db.SubAgents
                        join agent in Agents on subAgent.AgentID equals agent.ID
                select agent;

我有一个类似的为代理和客户端运行的连接语句。但这运行良好。不幸的是,它一直给我这个错误。

“用户代码未处理实体命令 ExecutionException”

在我准备将子代理详细信息发送到视图之前弹出此错误。

不知道自己做错了什么。

【问题讨论】:

  • 你能发布内部异常吗?
  • @eranga {"无效的对象名称'dbo.AgentAgentRelationships'。"}...这是内部异常消息。这个“AgentAgentRelationships”是我数据库中第二个表的名称。谢谢:)
  • EF所引用的表不存在或无权访问该表。
  • 我不知道它为什么要查看旧的命名表。在我开始使用那张桌子之前,我已经改变了它。我试图刷新它并重新加载表格,但效果很好。所以我只是简单地将它恢复为旧名称。感谢您的所有帮助埃兰加 :)

标签: c# asp.net-mvc-3 linq


【解决方案1】:

使用导航属性。

var query = from subAgent in db.SubAgents
            select subAgent.agent;

【讨论】:

  • 谢谢你的那个柯克,我试过了......我怎么能从另一张桌子上调用一张桌子。它不需要加入什么的。我对此很陌生,所以如果我的问题真的很愚蠢,我很抱歉!但我似乎无法弄清楚这一点。再次感谢! :)
  • 嗨 Sindhoor,这是一个很好的问题,因为它并不总是显而易见的。如果数据库对象具有外键,则框架将为每个相关的项目对生成属性。看我的问题stackoverflow.com/q/7229569/146077
  • 您好,我查看了您之前提出的问题。我了解连接是如何工作的。我一直得到 ---- {"Invalid object name 'dbo.AgentAgentRelationships'."} ----- 作为内部联合异常。而且真的不知道如何解决它。在过去的两天里,我一直在这样做:(
  • 您使用的是 LINQ-to-SQL 还是实体框架?尝试从数据库中更新您的课程。如果是 LINQ-to-SQL,请删除表并将其重新添加到设计器。如果是实体框架,请右键单击并更新。这将确保代码与数据库匹配。您是否连接了正确的数据库?
  • 我正在使用 LINQ - SQL。我必须有一些语句来匹配每个语句的 ID,然后我使用“.Find”方法来获取每条记录并填充代理类型的列表,然后将该列表发送到视图。我知道这感觉像是一种很长的方式来做到这一点。对我来说,它现在解决了这个问题,所以我想现在我可以接受。但需要找到更短的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
相关资源
最近更新 更多