实体框架通用方法不接受包含方法

时间:2019-07-18 12:24:13

标签: c# generics lambda entity-framework-6 contains

我有一个家长班和一些孩子班,像这样:

 public class TableParent
    {
        public string Nombre { get; set; }
        public int Parent_id{ get; set; }

    }

     public class T1
    {
        public string Nombre { get; set; }
        public int Parent_id{ get; set; }
       public int id{ get; set; }
    }

     public class T2
    {
        public string Nombre { get; set; }
        public int Parent_id{ get; set; }
      public int id{ get; set; }
    }

     public class T3
    {
        public string Nombre { get; set; }
        public int Parent_id{ get; set; }
      public int id{ get; set; }
    }

我有一个list<int>,并且从表tableParent中选择了Parent_id。我需要从T1,T2,T3中选择列表中包含Parent_id的那些记录。

我可以像这样为每个表做一个方法:

 public static async Task RunPromotionAddresId(List<int> promociones)
        {
            string ConnexionOrigen = "datasource..."

            List<T2> listaPromos = new List<T2>();
            using (var db = new MigrateModel(ConnexionOrigen))
            {
                db.Configuration.LazyLoadingEnabled = false;
                listaPromos = db.t2.Where(r => promociones.Contains(r.Parent_Id)).ToList();
            }

        }

它工作正常。我想做一个泛型方法被调用三遍:

 public static async Task GetFromDatabase<T>(List<int> promociones) where T : class
        {
            string ConnexionOrigen = "datasource"

            List<T> listaPromos = new List<T>();
            using (var db = new MigrateModel(ConnexionOrigen))
            {
                db.Configuration.LazyLoadingEnabled = false;
                listaPromos = db.Set<T>().Where(r => promociones.Contains(r.Parent_id)).ToList();

            }

        }

但是.. Contains(r.Parent_id)中出现错误:

  

T没有为Parent_id定义

如何将Contains Method与泛型一起使用。或者我该如何替换?

0 个答案:

没有答案