【问题标题】:not all tables were imported to my edmx并非所有表格都导入到我的 edmx
【发布时间】:2016-06-28 14:57:41
【问题描述】:

我正在开发 JQuery Mobile 项目,使用 EDMX + LINQ 获取 sql 查询。 在使用了一段时间后,我注意到我的一个连接表没有导入到我的数据实体模型中,尽管我现在需要查询这个表。

Here is the table (marked in blue) that was not imported properly

Here you can see the table in model browser but not in the diagram, hence i can't use it in my LINQ queries

我想这与它是一个连接表并且它不是独立存在的事实有关,所以如果我仍然想用 LINQ 而不是 SQL 来查询它,我该怎么办?

【问题讨论】:

  • 导航属性在您的Activities_TB 和Users_TB 上,所以我不用担心图表。只要您可以在上下文类中看到Users_Activities_TB,就可以了
  • 问题是我不能查询这个表。例如,我想获取与特定用户相关的所有活动。当我尝试执行以下操作时: var userActivities = from uAct in dbEntity.UsersActivities_TB ... 无法识别该表。在 Users_TB 和 Activities_TB 之间使用简单的连接是不够的,因为我需要知道这个特定用户是否有特定的活动,
  • 如果您想知道用户是否有特定活动,您只需使用 dbEntity.Users_TB.Where(a => a.Activities_TB.Any(b => b.Act_Name == "Golf")); 这将为您提供打高尔夫球的所有用途。此外,要获得所有打高尔夫球的用户,您可以使用 @987654324 @
  • Users_TB 将具有 ICollection<Activities_TB> 的属性,这将包含该用户的所有活动。Activities_TB 将具有 ICollection<Users_TB> 的属性,将具有分配的所有用户到那个活动
  • 太好了,非常感谢您的帮助!

标签: jquery sql sql-server linq edmx


【解决方案1】:

我猜这是因为你的表没有主键,它的两个字段都是其他表的外键。我遇到了视图/表未导入的类似问题。它需要自己的主键,例如 User_Activities_TB_ID。

【讨论】:

  • 我仔细检查了这个,这两个字段都是主键和外键。
  • 根据我的经验,我的建议将使表格导入您的模型。如果您想尝试,这取决于您,您可以随时恢复您的数据库更改并刷新模型。
  • 刚才我明白了你的意思:现在我有 2 个字段,它们都是主键和外键。我现在需要做的是添加第三个字段,它也是一个主键,但只对这个表是唯一的?所以换句话说,为了将表导入到 edmx,我必须至少有一个字段作为主键而不是外键?如果我错了,请纠正我。现在要检查这个
  • 是的,这将是我会尝试的解决方案。我已经处理过以前未导入的奇怪表和视图,这似乎是问题之一。我确定在某些地方有一些关于此类内容的文档,但这只是根据我的经验。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2017-03-16
  • 1970-01-01
相关资源
最近更新 更多