【发布时间】:2018-07-28 04:44:13
【问题描述】:
我正在使用带有 SQL 的 EF 6.2。假设我有这些 DTO 类:
private class ParentModel
{
public string FullName { get; set; }
public IEnumerable<ChildModel> Children { get; set; }
}
private class ChildModel
{
public string FullName { get; set; }
public string SpiritAnimalDescription { get; set; }
}
ParentModel 派生自实体类Parent。
ChildModel来自Child,与另一个实体类SpiritAnimal有关系。请注意,我在 .EDMX 中将其更改为 Children。
如您所见,SpiritAnimal 有一个 Description 字段,我试图将其检索到 ChildModel 字段 SpiritAnimalDescription。
当然,Parent 具有 Child 的集合,而 Child 又具有一个 SpiritAnimal(按设计)。现在,我正在尝试使用此代码获取List<ParentModel>,但目前无法使用:
var query = from p in db.Parents
join c in db.Children on p.Id equals c.Parent_Id
join sa in db.SpiritAnimals on c.SpiritAnimal_Id equals sa.Id
select new ParentModel
{
FullName = p.LastName + ", " + p.FirstName
Children = c.Select(a => new ChildModel // <-- Error here :(
{
FullName = a.FirstName + " " + a.LastName,
SpiritAnimalDescription = sa.Description
}
};
var list = query.ToList();
我怎样才能尽可能高效地解决这个问题?谢谢!
编辑:
为简洁起见,实体类看起来像这样:
private class Parent
{
public int Id { get; set; } // PK
public string LastName { get; set; }
public string FirstName { get; set; }
}
private class Child
{
public int Id { get; set; } // PK
public string LastName { get; set; }
public string FirstName { get; set; }
public int Parent_Id { get; set; } // FK
public int SpiritAnimal_Id { get; set; } // FK
}
private class SpiritAnimal
{
public int Id { get; set; } // PK
public string Description { get; set; }
}
【问题讨论】:
-
你能发布原创课程
Parent,Child和SpiritAnimal。想检查是否引用了外键 -
@Sumitraj 嘿,你现在可以检查一下,变化吗?谢谢
-
which currently isn't working:是什么意思 -
A/q 你的类没有外键引用。好的,所以我们将加入。如果有使用导航属性的外键,那将是一个班轮
-
linq 查询中 ChildModel 的错误信息是什么?
标签: c# entity-framework linq