是否有可能从我已经尝试的通用dataTable
获取entity.DbSet
但是到目前为止获取数据的唯一方法是Local
也许我错过了一个但我试过解析它如下DataSet ds = entityDbSet as DataSet;
但不可能。
我想到的唯一方法就是将entity.dbSet
放在一个列表中,基本上是循环的,但我相信这不是最好的主意。
我会尝试tolistasync
,但我还没弄清楚如何使用它。
答案 0 :(得分:2)
接口不兼容,你不能只是这样抛出它们。
public class DbSet<TEntity> : DbQuery<TEntity>, IDbSet<TEntity>, IQueryable<TEntity>, IEnumerable<TEntity>, IQueryable, IEnumerable, IInternalSetAdapter where TEntity : class
public class DataSet : MarshalByValueComponent, System.ComponentModel.IListSource, IXmlSerializable, ISupportInitializeNotification, ISerializable
您可以做什么,这对您非常有帮助:
var users = dbContext.Users.ToListAsync().Result.ToDataTable();
public static class DataTableExtensions
{
public static DataTable ToDataTable<T>(this IList<T> data)
{
PropertyDescriptorCollection properties =
TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
table.Rows.Add(row);
}
return table;
}
}
Convert DbContext to Datatable in Code first entity framework
为了保证异步,您的方法必须是异步的,并且必须在等待之后完成转换。