好吧,我基本上是在尝试这样做:
_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; }
}
最佳答案
问题是,我有一个包含2个框架版本的项目(实体框架6和实体框架核心)。
我从以下位置使用Include
方法:
using System.Data.Entity
而不是正确的:
using Microsoft.EntityFrameworkCore
关于c# - 如何在不选择新模型的情况下包括导航属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56793256/