gpt4 book ai didi

entity-framework - EF Codefirst 和 RDLC 报告

转载 作者:行者123 更新时间:2023-12-04 08:30:13 24 4
gpt4 key购买 nike

我正在使用 EF 6 开发 MVC4 Web 应用程序。我使用的是 EF 代码优先方法(在全新的数据库上)。所以我有我在 EF 中使用的模型类。

现在我需要创建一些 RDLC 报告。为此,我需要创建一个数据集。那么如何使用我的模型类创建数据集?我需要携带到数据集的模型类之间存在关系。

我的最终目标是使用我的 ef 模型设计和填充数据到我的报告中。

在 Adance 中感谢

最佳答案

通常 EF 不支持 DataSet。如果您想用 EF 加载的数据填充 DataSet,那么您必须为此提供自己的功能。在这里,我展示了一个如何从查询获得的结果中填充 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 table = context.People.ToDataTable();

如果你想实现表之间的关系,那么你要做的逻辑会更复杂。您应该使用 DataTable 对象的 ChildRelations 属性将它们与关系绑定(bind)。然后您的 DataTable 对象可能插入到 DataSet 中。

关于entity-framework - EF Codefirst 和 RDLC 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23343305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com