Я пытаюсь объединить связанные данные, используя Include
, но у меня возникли некоторые трудности. Мои модели следующие
public partial class GBTObject
{
public uint Id { get; set; }
public uint OrganizationId { get; set; }
public string Name { get; set; }
public virtual Device Device { get; set; }
public uint? DeviceId { get; set; }
}
public partial class Device
{
public uint Id { get; set; }
public uint OrganizationId { get; set; }
public string UUID { get; set; }
public bool? Enabled { get; set; }
}
public partial class DeviceState
{
public uint Id { get; set; }
public uint OrganizationId { get; set; }
public uint DeviceId { get; set; }
public string State { get; set; }
public DateTime? Timestamp { get; set; }
public byte? Event { get; set; }
public ulong TotalDistance { get; set; }
public string UserAgent { get; set; }
}
var data = _context.GBTObject
.Where(x => x.DeviceId != null && x.OrganizationId == _user.OrganizationId)
.Include(x => x.Device)
.Include(x => x.State)
Затем я попытался создать свойство тени внутри Device
[ForeignKey("Id")]
public virtual DeviceState State{ get; set; }
var data = _context.GBTObject
.Where(x => x.DeviceId != null && x.OrganizationId == _user.OrganizationId)
.Include(x => x.Device)
.ThenInclude(x => x.State)
Но это не работает, потому что он присоединяется, используя DeviceId
из GBTObject
с Id
из DeviceState
. Изменение внешнего ключа на DeviceId
приводит к странным ошибкам именования (он именует GBTObject.DeviceId
в GBTObject.DeviceId1
, а затем жалуется, что его не существует и выглядит как ошибка).
Я делаю это неправильно?