我有一个名为Employee
的类型,其中包含Alignments
(List<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; }
}