让我说我有
DBContext principal = new DBContext();
var x = principal.GetType().GetProperty("SomeClass").GetType();
我现在拥有DbSet的PropertyInfo< SomeClass>
我现在要做的是以某种方式迭代(例如转换为列表)并从表中的每一行获取值。
想象一下我能做到这一点:
x[0] // would be the 0th entery in DbSet<SomeClass>, the first row aka of type SomeClass
从这里我会知道如何进一步深入挖掘和访问属性(使用与上面相同的原理)
答案 0 :(得分:4)
DbSet同时实现IEnumerable
和IEnumerable<T>,
,如:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace efAW
{
class Program
{
static IEnumerable GetAllMembers(DbContext db, string dbSetName)
{
var pi = db.GetType().GetProperty(dbSetName);
return (IEnumerable)pi.GetValue(db);
}
static void Main(string[] args)
{
using (var db = new aw())
{
var customers = GetAllMembers(db, "Customers").OfType<Customer>().ToList();
}
}
}
}
大卫