代码之家  ›  专栏  ›  技术社区  ›  joshcomley

为什么我手工创建的linq2sql表关系显示在代码中?

  •  2
  • joshcomley  · 技术社区  · 15 年前

    在我的linq2sql dbml文件中,我有一些视图需要关联起来。

    我右键单击,选择“添加关联”,然后手动创建从孩子到家长的关联,例如:

    Customer.TypeId -> CustomerTypes.Id
    

    但我不能在我的代码中这样做:

    from c in Customers select c.Type.Name
    

    有什么线索吗?如果关系存在于数据库中,它们不存在也不存在,那么我就能够做到这一点。

    2 回复  |  直到 11 年前
        1
  •  2
  •   joshcomley    15 年前

    这很奇怪,我记得我写了我在这里想到的答案!

    基本上,问题在于,因为我查看的是视图而不是表,并且试图在DBML文件中将它们联系在一起,所以它们显然没有主键。有一次我告诉linq2sql哪些列是主键,那真是个快乐的小家伙!

        2
  •  0
  •   StevenMcD    15 年前

    我刚刚尝试了同样的方法,只有在我重新构建了包含linq to sql dbml文件的解决方案之后,查询才可能实现。在对关系进行更改之后,您是否重新构建了解决方案?

    不过,这是使用两个表完成的,让我链接两个视图,然后用结果编辑这个答案。

    编辑:好的,太糟糕了,把一个只查询数据库中视图的linqtosql查询的关联放在上面是不起作用的。但是,您可以在LINQ查询中指定联接。遗憾的是,这就像在dbml文件和代码中对其进行双重指定,但是如果您只是在其中添加一些注释,人们就会理解您为什么要这样做。

    所以至少在DBML文件中,“join”对其他人是可见的。