如何在Entity Framework Core中从内部联接的多行创建列表?

时间:2018-07-07 07:29:22

标签: c# entity-framework linq asp.net-core entity-framework-core

我有一个名为Pictures的视图模型,

Public class PicturesViewModel
{
    public string Name;
    Public List<String> FileNames;
}

,我在SQL Server数据库中有2个表,NamesFileNames,其中idname中的FileNames是指向id中的外键Names

This screenshot shows the 2 tables

我在ASP.NET Core MVC项目中使用Entity Framework Core。我必须使用数据库优先方法,并且我想在控制器中填充PicturesViewModel类并将其发送到视图。

问题是我找不到使用linq和Entity Framework从PicturesViewModel创建DbContext对象的方法。我可以考虑的唯一方法是使用C#(for或foreach)并通过2个步骤来实现:

  • 先填充Name
  • 然后用for / foreach循环填充FileNames

Linq或Entity Framework中还有另一种方法可以根据dbContext中的内部联接来创建列表吗?

1 个答案:

答案 0 :(得分:0)

型号:

Public class Filenames
{
    public decimal idName { get; set; }
    public string fileNames { get; set; }
    public Names Names { get; set; }
}

Public class Names 
{
    public decimal id { get; set; }
    public string Name { get; set; }
}

基本上:

使用Join basic(错误)=>

Context.Names.Join(Context.Names.Filenames,
                   nam => nam.id,
                   fil => fil.idName,
                   (nam, fil) => new { filename = fil, names = nam });

具有导航属性(在DB First中常见)=>

Context.Names.Include("Filenames");
Context.Names.Include(ent => ent.Filenames);