LINQ to Entities仅支持强制转换EDM基本类型或枚举类型。 (界面)

时间:2018-07-13 17:06:40

标签: c# asp.net-mvc linq casting

我有这个代码结构。

public interface IParentEquipment
{
    // attributes
}

[Table("TB_EQPT")]
public abstract class Equipment : IParentEquipment
{
   // attributes
}

[Table("TB_CAPACITOR")]
public class Capacitor : Equipment
{
   [Column("NAME")]
   public string Name { get; set; }
}

我正在基于以下条件进行查询:

public IList<IParentEquipment> FindAllEquipmentsBySubstationName(string name)
{
     List<IParentEquipment> equipments = new List<IParentEquipment>();

        // capacitor
     IQueryable<IParentEquipment> query = (
        from e in ((IAppContext)_ctx).Capacitor
        where e.Name.Equals(name)
        select e).Distinct().Cast<IParentEquipment>();
     equipments.AddRange(query.ToList());

     ....

    // more consultations of other equipment
 }

但是我得到了错误:

  

无法将类型“ Models.Base.Equipments.Capacitor”转换为类型   'Models.Base.Equipments.Interface.IParentEquipment'。 LINQ到实体   仅支持强制转换EDM基本类型或枚举类型。

我的问题是:是否可以在此查询中为 IParentEquipment 投放 Capacitor ?怎么做?

1 个答案:

答案 0 :(得分:0)

  

是否可以在此查询中为IParentEquipment投放电容器?

无需强制转换即可使此代码正常工作。

var query = (
    from e in ((IAppContext)_ctx).Capacitor
    where e.Name.Equals(name)
    select e).Distinct();

 equipments.AddRange(query);