在ASP.NET MVC 5中操作大量数据

时间:2015-08-15 00:34:55

标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-5

我目前正致力于使用包含大量数据的数据库来实现图表库。对于我正在使用的表,原始数据分布在148列数据中,超过1000行。由于我只为包含几列的表创建模型,因此我不确定如何为此特定表实现模型。我通常的创建模型并使用Entity Framework将其连接到数据库的方法似乎并不实际,因为为每个列实现148个属性似乎不是一种有效的方法。

我的问题是:

将此表实现为MVC项目的好方法是什么,以便有读取操作允许从表中提取数据?

如何构建模型以便人们可以从中读取148列数据而无需声明148个属性?

实体框架是实现这一目标的有效方式吗?

2 个答案:

答案 0 :(得分:0)

是的,数据库首先你可以如此快速地创建entites,同时记住这是一个很好的做法只返回你真正需要的fiedls,所以,你的实体有148列,但你的应用只需要10个字段,所以转换原始实体到模型或视图模型并使用它!

一个可以帮助你的优秀工具是AutoMapper

此致

答案 1 :(得分:0)

哇,那是很多专栏!

考虑到你的情况,我会想到一些想法:

1:如果您的问题是创建许多属性的腿部工作,您可以查看Entity Framework Power Tools。 EF Tools能够对数据库进行逆向工程,并为您创建必要的模型/实体关系映射,为您节省大量的工作量。

为了节省您一次性取出所有数据,您可以使用如下预测:

var result = DbContext.ChartingData.Select(x => new PartialDto {
               Property1 = x.Column1,
               Property50 = x.Column50,
               Property109 = x.Column109
             });

AutoMapper这样的工具可让您通过简单的可配置映射配置文件轻松完成此操作:

var result = DbContext.ChartingData.Project().To<PartialDto>().ToList();

2:如果您对通过实体框架操纵此类大型实体的性能感到担忧,那么您还可以考虑使用类似Dapper的内容(这将很好地与实体框架一起工作)

这样可以省去为较大的表建模实体的麻烦,但允许您轻松查询/更新特定列:

public class ModelledDataColumns
{
    public string Property1 { get; set; }

    public string Property50 { get; set; }

    public string Property109 { get; set; }
}

const string sqlCommand = "SELECT Property1, Property50, Property109 FROM YourTable WHERE Id = @Id";
IEnumerable<ModelledDataColumns> collection = connection.Query<ModelledDataColumns>(sqlCommand", new { Id = 5 }).ToList();

最终,如果您热衷于实体框架路线,那么据我所知,没有办法从数据库中提取数据而无需创建所有属性方式或其他。