使用实体框架查询返回的数据填充ViewModel

本文关键字:数据 填充 ViewModel 返回 查询 实体 框架 | 更新日期: 2023-09-27 18:27:51

我有以下视图模型

 public class VmPerson
 {
    public Person Person { get; set; }
    public PersonAddress PersonAddress { get; set; }
    public PersonEmploymentHistory PersonEmploymentHistory { get; set; }
 }

我调用一个函数并传递一个personId,然后尝试按如下方式填充Person类并传递回ViewModel这里将有其他查询来填充地址和工作历史

public VmPerson LoadPersonById(int personId)
{
        var vmPerson = new VmPerson();
        using (var context = new Context())
        {
            var r = (from p in context.Person
                join a in context.PersonAddress on p.PersonId equals a.PersonId
                join e in context.PersonEmployment on p.PersonId equals e.PersonId
                where p.PersonId == personId
                select new
                {
                    vmPerson.Person.PersonFirstName = p.PersonFirstName,
                    vmPerson.Person.PersonSurname = p.PersonSurname,
                    vmPerson.Person.PersonEmail= p.PersonEmail,
                    vmPerson.Person.Age = p.Age
                });
        }
        return vmPerson;
}

但我在select new{}中的所有语句上都得到了一个错误,这就是

匿名类型投影初始值设定项,应为简单名称或成员访问表达式

使用实体框架查询返回的数据填充ViewModel

public VmPerson LoadPersonById(int personId)
    {
        using (var context = new Context())
        {
            var r = (from p in context.Person
                join a in context.PersonAddress on p.PersonId equals a.PersonId
                join e in context.PersonEmployment on p.PersonId equals e.PersonId
                where p.PersonId == personId
                select new VmPerson
                {
                    Person = p,
                    PersonAddress = a,
                    PersonEmploymentHistory = e
                }).FirstOrDefault();
            return r;
        }
    }