Entity Framework 视图模型

Entity Framework ViewModel

我在数据库中有两个表,没有任何定义的关系。

    public class Person
    {
        public int PersonID { get; set; }
        public string Name { get; set; }
    }

    public class Car
    {
        public int CarID { get; set; }
        public string Model { get; set; }
        public int PersonID { get; set; }
    }

我创建了一个 PersonViewModel 如下

        public class PersonViewModel
    {
        public int PersonID { get; set; }
        public string Name { get; set; }

        public virtual ICollection<Car> Cars { get; set; }
    }

我想做一些如下的事情,但显然这是不正确的。 任何帮助将不胜感激。谢谢

    public PersonViewModel GetPerson(int personID)
    {
        var query = from p in db.Car
                    join c in db.Car on p.PersonID equals c.PersonID
                    where p.PersonID == personID
                    select new PersonViewModel()
                    {
                        PersonID = p.PersonID,
                        Name = p.Name
                        Cars = new List<Car>()
                        {
                            CarID = c.CarID,
                            Model = c.Model,
                            PersonID = p.PersonID
                        }
                    };

        var person = query.FirstOrDefault();

        return person;
    }

您正在同一 table 更改第一个 table:

之间进行连接
from p in db.Person

您必须加入 Person table 和 Car table,然后使用此加入组生成 Cars 的列表:

    var query = from p in db.Person
                join c in db.Car on p.PersonID equals c.PersonID into personCars
                where p.PersonID == personID
                select new PersonViewModel()
                {
                    PersonID = p.PersonID,
                    Name = p.Name
                    Cars = personCars.ToList()
                };

    var person = query.FirstOrDefault();