Entity framework EF Codefirst和RDLC报告
我正在使用EF6开发一个MVC4网络应用程序。我使用EF代码优先的方法(在一个全新的数据库上)。所以我有我在EF中使用的模型类Entity framework EF Codefirst和RDLC报告,entity-framework,asp.net-mvc-4,dataset,rdlc,Entity Framework,Asp.net Mvc 4,Dataset,Rdlc,我正在使用EF6开发一个MVC4网络应用程序。我使用EF代码优先的方法(在一个全新的数据库上)。所以我有我在EF中使用的模型类 现在我需要创建一些RDLC报告。为此,我需要创建一个数据集。那么,如何使用模型类创建数据集呢?我需要将模型类之间的关系带到数据集 我的最终目标是使用我的ef模型设计数据并将其填充到报告中 感谢您的支持,通常EF不支持数据集。如果您想用EF加载的数据填充数据集,那么您必须为此提供自己的功能。在这里,我提供了一个示例,说明如何根据查询获得的结果填充DataTable对象:
现在我需要创建一些RDLC报告。为此,我需要创建一个数据集。那么,如何使用模型类创建数据集呢?我需要将模型类之间的关系带到数据集 我的最终目标是使用我的ef模型设计数据并将其填充到报告中
感谢您的支持,通常EF不支持数据集。如果您想用EF加载的数据填充数据集,那么您必须为此提供自己的功能。在这里,我提供了一个示例,说明如何根据查询获得的结果填充DataTable对象:
public static class IEnumerableExtensions
{
public static DataTable ToDataTable<TEntity>(this IEnumerable<TEntity> entities)
{
DataTable table = new DataTable();
IEnumerable<PropertyInfo> properties = typeof(TEntity)
.GetProperties()
.Where(p => !p.PropertyType.IsClass || p.PropertyType == typeof(string))
foreach(string propertyName in properties.Select( p => p.Name))
{
table.Columns.Add(propertyName);
}
foreach(object item in entities)
{
List<object> propertiesValues = new List<object>();
foreach (PropertyInfo property in properties)
{
propertiesValues.Add(property.GetValue(item));
}
table.Rows.Add(propertiesValues.ToArray());
}
return table;
}
}
如果要实现表之间的关系,那么必须执行的逻辑将更加复杂。您应该使用DataTable对象的ChildRelations属性将它们与关系绑定。然后,您可以将数据表对象插入到数据集中
DataTable table = context.People.ToDataTable();