2 回答
TA贡献1777条经验 获得超10个赞
在代码中,您可以在所有DbSet上调用ToList()。否则,您将不得不编写一个执行a的存储过程,UNION然后仅调用sp。
public List<object> GetAllEntities(MyContext db)
{
var results = new List<object>();
results.AddRange(db.Customers.ToList());
results.AddRange(db.Providers.ToList());
results.AddRange(db.Products.ToList());
return results;
}
编辑: 好的无名列表,然后使用反射。
MyContext db = new MyContext();
var resultsList = new List<object>();
PropertyInfo[] info = db.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach(PropertyInfo item in info)
{
//Check for array, that it is a DbSet etc...
var setType = item.PropertyType.GetTypeInfo().GenericTypeArguments[0];
resultsList.AddRange(db.Set(setType).ToListAsync().Result);
}
return resultsList;
TA贡献1785条经验 获得超8个赞
根据Wurd的回复:
private IEnumerable<Type> GetAllEntities ()
{
var entities = new List<Type> ();
PropertyInfo[] info = GetType ().GetProperties (BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo item in info) {
var setType = item.PropertyType.GetTypeInfo ().GenericTypeArguments[0];
entities.Add (setType);
}
return entities;
}
- 2 回答
- 0 关注
- 256 浏览
添加回答
举报