Entity Framework 视图模型

3

我在数据库中有两个没有定义关联的表。

    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;
    }

4
请尝试将它改为在db.Person中的p。 - John Louie Dela Cruz
2个回答

1
你必须将Person表与Car表连接,然后使用此连接组生成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();

正是医生开的药方。谢谢! - Muad'Dib

0

你正在对同一张表进行连接操作,请更改第一个表:

from p in db.Person

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接