【发布时间】:2015-03-15 13:48:40
【问题描述】:
我有一个存储不同位置的数据库。根据位置的类型,唯一详细信息存储在与常见属性不同的表中(即名称、坐标、描述存储在Locations 表中,而人口存储在CityDetails 表中)。
这些表通过“特定详细信息”表中的 FK 连接。
由于有不止一个“特定详细信息”表,我正在摸索如何查询这些多个表。
我的位置对象如下所示:
[Table("Locations")]
public class LocationData
{
public Guid Id { get; set; }
// multiple different properties here.
public string Type { get; set; }
public DetailsData { get; set; }
}
基于Type 属性,我可以查看我必须查询的详细信息表。详细信息表至少如下所示:
public abstract class DetailsData
{
[Key, ForeignKey("Location")]
public Guid { get; set; }
public LocationData Location { get; set; }
}
表示位置类型的每个表都从DetailsData 类继承,并配置为使用“每个具体类的表”继承层次结构。
以下是“特定详细信息”表的示例:
[Table("CityDetails")]
public class CityDetailsData : DetailsData
{
public string Planet { get; set; }
public int Population { get; set; }
}
如何在Location 类中填充DetailsData 属性。这是我当前的 LINQ 查询:
from l in Locations
select new
{
Id = l.Id,
Name = l.Name,
Description = l.Description,
Coordinates = l.Coordinates,
Type = l.Type,
DetailsData = CityDetails // Here lies the problem. How can I populate this property properly?
}
【问题讨论】:
-
我假设您所有的“特定详细信息”表都有不同的列集?
-
是的。我用一个例子更新了这个问题。
标签: c# sql linq linq-to-entities linq-to-objects