【问题标题】:How to properly perform LINQ joins如何正确执行 LINQ 连接
【发布时间】:2014-03-13 22:26:44
【问题描述】:

我目前正在开发我的第一个数据库驱动的 .NET MVC 应用程序,其中我有一个名为 Animals 的表,其中包含许多字段。一个字段是动物的品种,在这个字段中,我持有另一个品种表的 ID,该品种的文本实际存储在该表中。

使用 LINQ,我如何加入表,然后将数据发送到视图,以便可以像这样以表格格式查看它 :

在品种列显示数字列表的图像中,我希望它是与品种表中相关的实际品种

【问题讨论】:

  • 你使用实体框架吗?
  • 是的,Kirill,我使用了 DB 优先方法
  • 所以 Linq 查询可以有一个join clause。试试看它是否有效。仅供参考 Linq 与 MVC 无关。
  • 你在展示外面。我们对内部更感兴趣,比如类图。
  • 如果这是 EF,那么您应该使用导航属性而不是外部联接。将外键从一个表设置到另一个表并享受。

标签: asp.net-mvc linq entity-framework ef-code-first


【解决方案1】:

使用可以从模型生成的导航属性。

那么你的班级应该是这样的。

public class Animals {
  //primitive properties
  public int Id {get;set;}
  //etc.

  //Navigation Properties
  public virtual Breeds Breeds {get;set;}
}

public class Breeds {
  //prmitive properties
  public int Id {get;set;}
  public string Name {get;set;}

  //Navigation properties
  public virtual ICollection<Animals> Animals {get;set;}
}

然后获取具有导航属性的实体:

var animal = Repository.Animals.Include(m => m.Breed)
                       .FirstOrDefault(m => m.Id == <someId>);

你可以使用(想象你的视图模型是Animals

@Html.Displayfor(m => m.Breed.Name)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    相关资源
    最近更新 更多