如何在不选择新模型的情况下包含导航 属性?
How to include a navigation property without selecting a new Model?
好吧,我基本上是在尝试这个:
_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();
是否可以 select 包括 BarcodeType
在内的整个 BarcodeEvents
而无需创建新模型?
我试过了,但是导航属性还是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 个框架版本(Entity Framework 6 和 Entity Framework 核心)。
我使用的 Include
方法来自:
using System.Data.Entity
而不是正确的:
using Microsoft.EntityFrameworkCore
好吧,我基本上是在尝试这个:
_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();
是否可以 select 包括 BarcodeType
在内的整个 BarcodeEvents
而无需创建新模型?
我试过了,但是导航属性还是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 个框架版本(Entity Framework 6 和 Entity Framework 核心)。
我使用的 Include
方法来自:
using System.Data.Entity
而不是正确的:
using Microsoft.EntityFrameworkCore