无法在EF TPH中查询继承的类型属性

时间:2016-04-07 09:25:44

标签: c# .net entity-framework tph

使用 ef 版本6.1.3和Unity存储库在asp.net mvc5 上工作。假设有一个 base 类型的模型 SmartDevice 三种派生类型 SmartRainbow SmartRouter SmartSwitch 。像吼叫:

private readonly IRepositoryAsync<SmartDevice> _smartDeviceRepository;

构造函数具有下列语法

_smartDeviceRepository = unitOfWork.RepositoryAsync<SmartDevice>();

SmartDevice

 public class SmartDevice : Entity
    {
        #region Primitive Properties
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int DeviceId { get; set; }

        public DeviceType DeviceType { get; set; }
        #endregion



        #region  Navigation Properties

        public virtual ICollection<DeviceStatus> DeviceStatus { get; set; }

        #endregion
    }

SmartSwitch

  public class SmartSwitch : SmartDevice
    {
        #region  Navigation Properties      
        public virtual ICollection<Channel> Channels { get; set; }              
        #endregion
    }

SmartRainbow

 public class SmartRainbow : SmartDevice
    {
        #region  Navigation Properties

        public virtual ICollection<RgbwStatus> RgbwStatuses { get; set; }

        #endregion
    }

通过查询 SmartDevice ,我得到了所有实体,我的语法如下:

var temp = _smartDeviceRepository.Query().Select().ToList();

问题是通过以上结果的每个实体将是类型 SmartRainbow SmartRouter SmartSwitch 我无法加载任何单个继承的类型属性和导航的主题。

使用bellow语法我无法加载导航属性

var temp = _smartDeviceRepository.Query().Select().OfType<SmartSwitch>().ToList(); 
  • 无法加载 SmartSwitch 属性频道
  • OfType 方法后无法使用 include
  • 为什么 OfType 之后不能包含

0 个答案:

没有答案