Ну, я в основном пытался это:
_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; }
}





Проблема заключалась в том, что у меня есть проект с двумя версиями Framework (Entity Framework 6 и Entity Framework Core).
Я использовал метод Include из:
using System.Data.Entity
Вместо правильный:
using Microsoft.EntityFrameworkCore