【发布时间】:2019-06-27 14:27:47
【问题描述】:
嗯,我基本上是在尝试这个:
_dbContext.BarcodeEvents.Include(e => e.BarcodeType).ToList();
现在我期待我得到一个 BarcodeEvents 列表,其中设置了导航属性 BarcodeType。问题是,BarcodeType 是null。然后我配置 EF Core 来输出生成的查询,结果发现,它简单地忽略了连接。
首先我认为,我的导航属性配置有一些错误,但后来我意识到,将其具体化为新模型时它正在工作:
_dbContext.BarcodeEvents.Include(e => e.BarcodeType).Select(e => new
{
e.EventTimestamp, //root property also available
e.BarcodeType.BarcodeTypeDescription // navigation property available in this case
//...
}).ToList();
是否可以在不创建新模型的情况下选择整个BarcodeEvents,包括BarcodeType?
我试过了,但是导航属性还是null:
_dbContext.BarcodeEvents.Include(e => e.BarcodeType).Select(e => e).ToList();
仅供参考,这里是我的实体:
public class BarcodeEvents
{
[Column("EventID")]
public Guid EventId { get; set; }
[Column(TypeName = "datetime")]
public DateTime EventTimestamp { get; set; }
[Column("DeviceID")]
public int DeviceId { get; set; }
public byte DataType { get; set; }
[ForeignKey(nameof(DataType))]
public virtual BarcodeTypes BarcodeType { get; set; }
public string RawData { get; set; }
public string DataLabel { get; set; }
public string DecodedBarcode { get; set; }
}
public class BarcodeTypes
{
[Key]
[Column("BarcodeTypeID")]
public byte BarcodeTypeId { get; set; }
[StringLength(50)]
public string BarcodeTypeDescription { get; set; }
}
【问题讨论】:
标签: c# entity-framework entity-framework-core navigation-properties