如何在不选择新模型的情况下包括导航属性?

时间:2019-06-27 14:27:47

标签: c# entity-framework entity-framework-core navigation-properties

好吧,我基本上是在尝试:

_dbContext.BarcodeEvents.Include(e => e.BarcodeType).ToList();

现在,我希望得到一个BarcodeEvents列表,其中已设置导航属性BarcodeType。问题在于,BarcodeTypenull。然后,我将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; }
}

1 个答案:

答案 0 :(得分:1)

问题是,我有一个包含2个框架版本(Entity Framework 6和Entity Framework Core)的项目。

我从以下位置使用了Include方法:

using System.Data.Entity

代替正确的

using Microsoft.EntityFrameworkCore