我目前正致力于使用包含大量数据的数据库来实现图表库。对于我正在使用的表,原始数据分布在148列数据中,超过1000行。由于我只为包含几列的表创建模型,因此我不确定如何为此特定表实现模型。我通常的创建模型并使用Entity Framework将其连接到数据库的方法似乎并不实际,因为为每个列实现148个属性似乎不是一种有效的方法。
我的问题是:
将此表实现为MVC项目的好方法是什么,以便有读取操作允许从表中提取数据?
如何构建模型以便人们可以从中读取148列数据而无需声明148个属性?
实体框架是实现这一目标的有效方式吗?
答案 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();
最终,如果您热衷于实体框架路线,那么据我所知,没有办法从数据库中提取数据而无需创建所有属性方式或其他。