Linq 用于填充ViewModel的实体框架

Linq 用于填充ViewModel的实体框架,linq,entity-framework,Linq,Entity Framework,我不确定从哪里开始使用实体框架。下面是表格数据的示例。首先通过代码创建表 I have 5 tables: Id - Person 12 - John 13 - Sarah 14 - Bob 15 - Frank Id - Package 1 - Standard 2 - Extra 3 - Gold 4 - Off Season Id - Features 21 - Feature A 22 - Feature B 23 - Feat

我不确定从哪里开始使用实体框架。下面是表格数据的示例。首先通过代码创建表

I have 5 tables:  
Id - Person  
12 - John  
13 - Sarah  
14 - Bob  
15 - Frank  

Id - Package  
1 - Standard  
2 - Extra  
3 - Gold  
4 - Off Season  

Id - Features  
21 - Feature A  
22 - Feature B  
23 - Feature C  
24 - Feature D  

Link Tables  
PersonId - PackageId  
12 - 1  
12 - 4  
13 - 3  
14 - 2  
15 - 1  
15 - 2  

PackageId - FeatureId  
1 - 21  
1 - 22  
2 - 21  
2 - 22  
2 - 23  
3 - 21  
我知道我可以找出一个人的特征,比如:

var person = _db.Persons
    .Where(p => p.Id == id)
    .Include(p => p.Packages)
    .Include("Packages.Features")
    .SingleOrDefault();
public class PersonViewModel
{
    public int Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    ...

    public List<FeatureViewModel> Features { get; set; }
}
var person = _db.Persons
                .Where(p => p.Id == id)
                .Include(p => p.Packages)
                .Include("Packages.Features")
                .SingleOrDefault();
但是,我希望得到一个ViewModel类,甚至是一个只有以下列的列表:

PersonId Person FeatureId Feature
12 - John - 21 - Feature A
12 - John - 22 - Feature B

我知道我可以用SQL来做。我只是不知道如何使用Linq和实体框架。这样做的最佳实践是什么?

我建议首先使用EF代码。 可以创建以下类:

public class Person
{   
    [Key]
    public int Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    ...

    public ICollection<Package> Packages { get; set; }
}

public class Package
{   
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }

    ...

    public ICollection<Feature> Features { get; set; }
}

public class Feature
{   
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }

    ...

}
例如,要使用Automapper填充ViewModel,请执行以下操作:

var personViewModel = Mapper.Map<PersonViewModel>(person);
var personViewModel=Mapper.Map(person);

你真的必须展示一些初步的努力,否则我们不知道从哪里开始。我是说,我们能假设你基本上知道如何使用EF吗?LINQ的基本知识?您使用的是数据访问层吗?代码优先还是数据库优先?可以在控制器或视图模型中填充集合。在我们帮助你之前,你必须先告诉我们你在做什么。最后一部分,汽车制造商,是我唯一想要的!非常感谢。一个问题。。。FeatureViewModel,这是另一个ViewModel吗?或者你是说名单?