在linq查询中中断嵌套对象检索

时间:2017-08-10 21:48:45

标签: c# entity-framework linq

我有一个名为Employee的类型,其中包含AlignmentsList<Alignment>)列表。反过来,Alignment有一个Manager,它是Employee个对象。所以,我有一个潜在的无限嵌套关系。

当我尝试检索所有员工的列表时,我还想要一份他们的Alignments列表,并且在Alignments中,我想要经理。但是,我不想要经理的对齐。

以下是我试图做的精简版。

MyEntities db = new MyEntities()

db.Employees
.Select(x => new EmployeeModel
{
    DisplayName = x.FirstName + " " + x.LastName,
    Alignments = db.Alignments
        .Where(a => a.EmployeeID == x.EmployeeID)
        .Select(y => new AlignmentModel
        {
            Id = y.AlignmentID,
            Manager = new EmployeeModel
            {
                DisplayName = y.Manager.FirstName + " " + y.Manager.LastName
                //,Alignments = null
            },
            Name = y.AlignmentName
        }).ToList()
})

我收到的错误消息是:

  

类型&#39;员工&#39;在单个LINQ to Entities查询中出现两个结构不兼容的初始化。可以在同一查询中的两个位置初始化类型,但前提是在两个位置都设置了相同的属性,并且这些属性的设置顺序相同。

我意识到这是因为Manager的对齐不是查询的一部分,但是,如果我包含它们,我会遇到Alignments需要有一个Manager的问题,需要一个对齐列表等。

如何在始终使用相同属性初始化时打破这种依赖?我无法将Alignments设置为null,因为我得到另一个关于Alignments列表的错误,必须初始化而不是null。

------ --------编辑

对此感到抱歉。我使用Entity Framework使用Employees和Alignments查询SQL数据库。

这是我在c#中的Employee和Alignment对象模型,我希望将数据加载到(为简单起见而剥离)

public class EmployeeModel 
{
    public List<AlignmentModel> Alignments { get; set; }
    public string DisplayName { get; set; }
    public int ID { get; set; }

    public EmployeeModel() {
        Alignments = new List<AlignmentModel>();
    }
}

public class AlignmentModel
{
    public EmployeeModel Employee { get; set; }
    public EmployeeModel Manager { get; set; }
    public int Id { get; set; }
    public string Name { get; set; }
}

0 个答案:

没有答案