1

efバージョン 6.1.3 および Unity リポジトリを使用して asp.net mvc5で作業します。SmartDevice の基本タイプとSmartRainbowSmartRouterSmartSwitchの3 つの派生タイプを持つモデルがあるとします。以下のように:

private readonly IRepositoryAsync<SmartDevice> _smartDeviceRepository;

コンストラクターには以下の構文があります

_smartDeviceRepository = unitOfWork.RepositoryAsync<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
    }

スマートスイッチ

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

スマートレインボー

 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のタイプになることです。単一の継承されたタイプ プロパティとナビゲーション プロパティをロードできません。

以下の構文を使用して、ナビゲーション プロパティの読み込みに失敗しました

var temp = _smartDeviceRepository.Query().Select().OfType<SmartSwitch>().ToList(); 
  • SmartSwitchプロパティチャネルを読み込めませんか?
  • OfTypeメソッドの後にincludeを使用できませんか?
  • OfTypeの後にincludeできないのはなぜですか?
4

0 に答える 0